为了方便用户使用,插入耳机,提示打开与耳机相关的app,如图:
1、接收耳机插入广播
public class AssisstBroadcast extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
// TODO Auto-generated method stub
if (intent.getAction().equals(Intent.ACTION_BOOT_COMPLETED) ){
Intent i = new Intent();
i.setClass(context, PluginHeadsetService.class);
context.startService(i);
}
if ((intent.getAction().equals(Intent.ACTION_HEADSET_PLUG) ) && headsetplug ){
if (intent.hasExtra("state")){
if (intent.getIntExtra("state", 0) == 0){
Log.v(TAG, "AssisstBroadcast, HEADSET_PLUG, headset plugout");
}
else if (intent.getIntExtra("state", 0) == 1){
Log.v(TAG, "AssisstBroadcast, HEADSET_PLUG, headset plugin");
Intent i = new Intent();
i.setClass(context, HeadsetPlugActivity.class);
i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(i);
}
}
}
}
2、提示选择框,用了一个dialog 属性的activity
<activity android:name="com.ibd.huaqin.HeadsetPlugActivity"
android:theme="@android:style/Theme.Dialog"
android:label="Do you want to do?">
<intent-filter>
<category android:name="android.intent.category.DEFAULT"/>
</intent-filter>
</activity>
public class HeadsetPlugActivity extends ListActivity {
private static final int KEY_CODE_FM = 0;
private static final int KEY_CODE_MUSIC = 1;
private static final int KEY_CODE_VIDEO = 2;
final String[] arrayforheadset = new String[] { "FM Radio", "Music", "Video" };
private Button bCancel;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.headsetplug);
Log.v(TAG, "HeadsetPlugActivity onCreate");
setListAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1,arrayforheadset));
bCancel = (Button)findViewById(R.id.cancel);
bCancel.setOnClickListener(new CancelListener());
}
@Override
protected void onListItemClick(ListView l, View v, int position, long id) {
// TODO Auto-generated method stub
super.onListItemClick(l, v, position, id);
switch (position) {
case KEY_CODE_FM:
{
Intent i = new Intent("com.mediatek.FMRadio.FMRadioActivity");
i.setClassName("com.mediatek.FMRadio", "com.mediatek.FMRadio.FMRadioActivity");
i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
this.startActivity(i);
finish();
break;
}
case KEY_CODE_MUSIC:
{
Intent i = new Intent("com.android.music.MusicBrowserActivity");
i.setClassName("com.android.music", "com.android.music.MusicBrowserActivity");
i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
this.startActivity(i);
finish();
break;
}
case KEY_CODE_VIDEO:
{
Intent i = new Intent("com.mediatek.videoplayer.MovieListActivity");
i.setClassName("com.mediatek.videoplayer", "com.mediatek.videoplayer.MovieListActivity");
i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
this.startActivity(i);
finish();
break;
}
}
}
class CancelListener implements OnClickListener{
public void onClick(View v) {
// TODO Auto-generated method stub
finish();
}
}}
3、android.intent.action.HEADSET_PLUG 广播注册要动态注册,静态注册没有效果,所以起来一个service
public class PluginHeadsetService extends Service{
private AssisstBroadcast assisstBroadcast;
@Override
public void onCreate() {
// TODO Auto-generated method stub
super.onCreate();
Log.v(TAG, "PluginHeadsetService onCreate");
assisstBroadcast = new AssisstBroadcast();
IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction("android.intent.action.HEADSET_PLUG");
registerReceiver(assisstBroadcast, intentFilter);
}
@Override
public void onDestroy() {
// TODO Auto-generated method stub
super.onDestroy();
unregisterReceiver(assisstBroadcast);
Log.v(TAG, "PluginHeadsetService onDestroy");
}
}