嗨,我正在开发一个应用程序,当从手机中删除耳机时生成一个事件.我用接收方法创建了一个广播接收器
public void onReceive(Context context, Intent intent) {
// TODO Auto-generated method stub
String action = intent.getAction();
Log.i("Broadcast Receiver", "Hello");
if( (action.compareTo(Intent.ACTION_HEADSET_PLUG)) == 0) //if the action match a headset one
{
int headSetState = intent.getIntExtra("state", 0); //get the headset state property
int hasMicrophone = intent.getIntExtra("microphone", 0);//get the headset microphone property
if( (headSetState == 0) && (hasMicrophone == 0)) //headset was unplugged & has no microphone
{
//do whatever
}
}
}
Run Code Online (Sandbox Code Playgroud)
调用此方法如下
IntentFilter receiverFilter = new IntentFilter(Intent.ACTION_HEADSET_PLUG);
HeadSetBroadCastReceiver receiver = new HeadSetBroadCastReceiver();
registerReceiver( receiver, receiverFilter );
Run Code Online (Sandbox Code Playgroud)
我也在清单中注册了这个
<receiver android:name=".HeadsetBroadCastReceiver">
<intent-filter>
<action android:name="android.intent.action.ACTION_HEADSET_PLUG"/>
</intent-filter>
</receiver>
Run Code Online (Sandbox Code Playgroud)
和许可
但这不起作用,任何人都可以指导我通过这个吗?
小智 19
这是一个棘手的问题,但您可以使用BroadCast作为以下在您的活动中与我合作
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
myReceiver = new HeadSetReceiver();
}
Run Code Online (Sandbox Code Playgroud)
并在onResume()方法中注册您的广播
public void onResume() {
IntentFilter filter = new IntentFilter(Intent.ACTION_HEADSET_PLUG);
registerReceiver(myReceiver, filter);
super.onResume();
}
Run Code Online (Sandbox Code Playgroud)
然后在您的活动中声明您的BroadCast
private class HeadSetReceiver extends BroadcastReceiver {
@Override public void onReceive(Context context, Intent intent) {
if (intent.getAction().equals(Intent.ACTION_HEADSET_PLUG)) {
int state = intent.getIntExtra("state", -1);
switch (state) {
case 0:
Log.d(TAG, "Headset unplugged");
break;
case 1:
Log.d(TAG, "Headset plugged");
break;
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
希望它的帮助,,,
| 归档时间: |
|
| 查看次数: |
11825 次 |
| 最近记录: |