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

为了方便用户使用,插入耳机,提示打开与耳机相关的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"); 
}
}








评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值