专注收集记录技术开发学习笔记、技术难点、解决方案
网站信息搜索 >> 请输入关键词:
您当前的位置: 首页 > 移动开发

怎么获取耳机是否已插入和耳机实时插拔情况

发布时间:2010-05-30 00:03:55 文章来源:www.iduyao.cn 采编人员:星星草
如何获取耳机是否已插入和耳机实时插拔情况?

1、在一般的程序中检测手机是否已插入耳机的情况:

<pre name="code" class="java">    AudioManager localAudioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE); 
    boolean hasHeadset = localAudioManager.isWiredHeadsetOn();


这两句话就可以知道此刻的手机是否有插入耳机,当然了只是写上这两句话是无效的,还需要在AndroidManifest.xml文件中添加如下权限。

<span style="font-size:18px;"><uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" /></span>

2、另外一种就是实时的检测耳机的插拔情况:

 耳机的插拔事件,android系统都会发出广播告知用户。我们在程序中需要去接收这个广播,在AndroidManifest.xml文件中写死是无效的,具体原因有待研究,网上查了一下说是“sticky” event。

走到这里就只能手动的在代码里面动态注册了啊!创建一个子类,继承自BroadcastReceiver,用于监听耳机的插拔情况。

public class HeadsetReceiver extends BroadcastReceiver {   
   
    @Override   
    public void onReceive(Context context, Intent intent) {   
      if (intent.hasExtra("state")){   
        if (intent.getIntExtra("state", 0) == 0){ //耳机插入
          Toast.makeText(context, "headset is not plug", Toast.LENGTH_LONG).show();   
        }   
        else if (intent.getIntExtra("state", 0) == 1){ //耳机拔出
          Toast.makeText(context, "headset is plug", Toast.LENGTH_LONG).show();   
        }   
      }   
    }    
}<pre name="code" class="java">


然后在要监听这个动作的Activity 的onCreate()方法中注册广播。在onDestory()方法中将注册了的广播注销。

public class TestHeadSetPlugActivity extends Activity { 
private HeadsetReceiver headsetReceiver; 
/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
super.onCreate(savedInstanceState); 
setContentView(R.layout.activity_main); 
/* register receiver */ 
registerHeadsetPlugReceiver(); 
} 
private void registerHeadsetPlugReceiver() { 
	headsetReceiver = new HeadsetReceiver(); 
IntentFilter intentFilter = new IntentFilter(); 
intentFilter.addAction("android.intent.action.HEADSET_PLUG"); 
registerReceiver(HeadsetReceiver, intentFilter); 
} 
@Override 
public void onDestroy() { 
unregisterReceiver(HeadsetReceiver); 
super.onDestroy(); 
} 
} 

至此,耳机的插拔监听事件已经完成。








友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。

其他相似内容:

热门推荐: