gpt4 book ai didi

android - ACTION_HEADSET_PLUG 在 Android 中广播的问题

转载 作者:行者123 更新时间:2023-11-29 16:27:14 31 4
gpt4 key购买 nike

我试过这些手机:Motorolla Backflip 1.5、Nexus One 2.1

基本上我注册 BroadcastReceiver 以获得 ACTION_HEADSET_PLUG 广播并查看 3 个额外的 Intent :

  • 状态
  • 姓名
  • 麦克风

这是来自 API 的描述:

* state - 0 for unplugged, 1 for plugged.
* name - Headset type, human readable string
* microphone - 1 if headset has a microphone, 0 otherwise

问题 #1:当 Activity 开始时(不是预期的)、屏幕旋转发生时(不是预期的)以及耳机/耳机插入/拔出时(预期的)会出现广播。

问题 2:Backflip phone (1.5) 为状态 + 麦克风发送 null,当耳机/耳机拔出时将“No Device”作为名称发送,并为状态 + 麦克风发送 null,“Stereo HeadSet”/“Stereo HeadPhones”作为名称当耳机/耳机插入时。

更新:T-Mobile G1 1.6 的行为与 Backflip 手机相同。

Nexus 更糟糕的是,当耳机/耳机插入或拔出时,它总是为状态 + 麦克风发送 null,“耳机”作为名称。

问题:如何解释 API 在 1.5 和 2.1 版本以及不同的设备和制造商上损坏如此之多?

更新:

主Activity的onCreate中的代码:

// Register receiver
this.registerReceiver(new BroadcastsHandler(), new IntentFilter(Intent.ACTION_HEADSET_PLUG));

现在是BroadcastReceiver的代码:

public class BroadcastsHandler extends BroadcastReceiver {

@Override
public void onReceive(Context context, Intent intent) {
if (intent.getAction().equalsIgnoreCase(Intent.ACTION_HEADSET_PLUG)) {
String data = intent.getDataString();
Bundle extraData = intent.getExtras();

String st = intent.getStringExtra("state");
String nm = intent.getStringExtra("name");
String mic = intent.getStringExtra("microphone");
String all = String.format("st=%s, nm=%s, mic=%s", st, nm, mic);


AlertDialog.Builder builder = new AlertDialog.Builder(context);
builder.setTitle("Headset broadcast");
builder.setMessage(all);
builder.setPositiveButton("Okey-dokey", new DialogInterface.OnClickListener() {

public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
});
builder.create().show();
}
}

最佳答案

代码错误!

“状态”和“麦克风”是整数,不是字符串。所以代码应该修改如下:

    int st = intent.getIntExtra("state" , -1);
String nm = intent.getStringExtra("name");
int mic = intent.getIntExtra("microphone", -1);
String all = "st="+Integer.toString(st)+" nm="+nm+" mic="+Integer.toString(mic);

有效!

关于android - ACTION_HEADSET_PLUG 在 Android 中广播的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2524923/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com