检测耳机插入和拔出

实时检测耳机插入和拔出:

每当插入和拔出耳机时,系统都会发送Intent广播, 所以,只需要用一个receiver把这个广播intent(获取的action是:“android.intent.action.HEADSET_PLUG”)截获就好。

这个receiver必须要用代码注册,而不能写在manifest里面用写入内存的方式。

在Android下实现检测耳机插入和拔出,也即建立一个Broadcast Receiver,监听“android.intent.action.HEADSET_PLUG”广播

但直接在AndroidManifest.xml中添加一个<receiver>标签是无效的,如:

    <receiver android:name=".HeadsetPlugReceiver">
    <intent-filter>
      <action android:name="android.intent.action.HEADSET_PLUG" android:enabled="true"></action>
    </intent-filter>
    </receiver>  

你会发现Receiver的onReceive事件永远不会被触发,解决方法就是手动编写代码注册该广播。

首先,创建一个BroadcastReceiver的子类,用于监听耳机插入和拔出:

    public class HeadsetPlugReceiver extends BroadcastReceiver {    

        private static final String TAG = "HeadsetPlugReceiver";    

        @Override
        public void onReceive(Context context, Intent intent) {
          if (intent.hasExtra("state")){
            if (intent.getIntExtra("state", 0) == 0){
              Toast.makeText(context, "headset not connected", Toast.LENGTH_LONG).show();
            }
            else if (intent.getIntExtra("state", 0) == 1){
              Toast.makeText(context, "headset connected", Toast.LENGTH_LONG).show();
            }
          }
        }    

    }    
时间: 2024-10-06 03:02:45

检测耳机插入和拔出的相关文章

android实现耳机插入和拔出状态检测

在Android下实现检测耳机插入和拔出,需要建立一个BroadcastReceiver,用来监听"android.intent.action.HEADSET_PLUG"广播. 实现步骤: 1.创建一个BroadcastReceiver的子类,并重写onReceive()方法,在该方法中编写接收到广播后的处理逻辑: 2.创建一个Activity类,在onCreate()方法中使用registerReceiver()方法进行注册监听广播: 3.在Activity中重写onDestory(

Android -- 检测耳机插入状态

原理                                                                                    其实android系统在耳机插入和拔出的时候都会发送广播,所以我们要想检测耳机的状态只需要注册响应的BroadCastReceiver,对状态进行响应的判断就ok了. 这个广播的名字叫做:android.intent.action.HEADSET_PLUG Code                               

iOS 检测耳机插入/拔出

http://www.verydemo.com/demo_c134_i28481.html 开发过程中录音和播放这块碰到了一些问题,麻烦的主要有三个: 检测是否有声音输入设备 当有多个声音输出设备时,指定声音输出设备 检测耳机的插入和拔出 第一个问题,对于iTouch和iPad等本身不带麦克风的设备,需要检查是否插入了带录音功能的耳机:对于iphone,由于其本身已近自带麦克风,所以相对容易.第二个问题,当在本身带有外放的设备上插入耳机等输出设备时,就出现了多个输出设备,需要实现在程序中指定将声

iOS检测耳机插入拔出

首先,需要导入两个框架 然后,注册通知检测耳机的插入与拔出操作 1 [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(outputDeviceChanged:)name:AVAudioSessionRouteChangeNotification object:[AVAudioSession sharedInstance]]; 2 [[NSNotificationCenter defaultCente

WINDOWS检测U盘插入,拔出

检测U盘的插入或拔出状态,然后根据状态做出相关操作. 检测U盘是否被插入是通过监听WM_DEVICECHANGE消息来实现的. 判断-U盘拔出和插入-获取它盘符 2010-05-04 10:59 加入消息 ON_WM_DEVICECHANGE(OnDeviceChange) 加入 afx_msg void OnDeviceChange(UINT nEventType, DWORD dwData); -------------------------------------------------

QT 监听 USB 设备 插入、拔出动作

参考网上资料,通过QT 实现 #ifndef WIDGET_H #define WIDGET_H #include <QtGui/QWidget> #include <windows.h> #include <QString> class Widget : public QWidget { Q_OBJECT public: Widget(QWidget *parent = 0); ~Widget(); protected: bool winEvent(MSG *msg,

广播监听USB插入与拔出

package com.joy.usbbroadcastreceiver; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.os.Bundle; import android.support.v7.app.AppCompatActiv

IOS 判断耳机插入/拔出

一. 方式 1.注册监听 //注册监听耳机设备的插入/拔出 AudioSessionAddPropertyListener (kAudioSessionProperty_AudioRouteChange,audioRouteChangeListenerCallback,  nil); 2. void audioRouteChangeListenerCallback ( void                      *inUserData, AudioSessionPropertyID   

Android打开飞行模式和拔出耳机时自动退出FM Radio应用

FM收音机需要插入耳机作为天线,拔出耳机时要自动退出 1.首先添加提示字符串 mediatek/packages/apps/FMRadio/res/values/strings.xml <!--TChip ZJ Add Below--> <string name="toast_plugin_headphone_before_FM">The FM will close because you have been plug out the headphone<