您的位置:首页 > 移动开发

功能:插入耳机,提示打开与耳机相关的app

2014-03-14 11:15 141 查看
为了方便用户使用,插入耳机,提示打开与耳机相关的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");

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: