功能:插入耳机,提示打开与耳机相关的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");
}
}
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");
}
}
相关文章推荐
- cocos2d-x 之 如何画圆的轨迹路线
- iOS 邮件
- android 圆形的ImageView
- iOS NSTimer invalidate 和 release 释放问题
- Android Service学习之AIDL, Parcelable和远程服务
- android中getSystemService详解
- Android中assets目录和res/raw目录的异同区别和使用场景
- Android本地视频播放器开发--简易播放器原型
- 微信公众平台开发前的准备工作(转载自walkingmanc的专栏)
- android支持多种屏幕
- android支持多种屏幕
- iOS系列译文:测试并发程序
- 从零开始搭建Android手机系统开发环境
- android RadioButton文字居中的方法
- 大齐玩转微信公众账号 : 微信公众账号开发 :消息原理
- Android 4.4 模拟器支持art模式
- 正在运行的android程序,按home键之后退回到桌面,在次点击程序图标避免再次重新启动程序解决办法
- 大齐玩转微信公众账号 : 微信公众账号开发 :消息原理
- Android的环境搭建
- Unity3D 游戏贴图(法线贴图,漫反射贴图,高光贴图)