- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
您好,我正在开发一个应用程序,当耳机从手机上取下时会生成一个事件。我创建了一个接收方法为的广播接收器
public void onReceive(Context context, Intent intent) {
// TODO Auto-generated method stub
String action = intent.getAction();
Log.i("Broadcast Receiver", "Hello");
if( (action.compareTo(Intent.ACTION_HEADSET_PLUG)) == 0) //if the action match a headset one
{
int headSetState = intent.getIntExtra("state", 0); //get the headset state property
int hasMicrophone = intent.getIntExtra("microphone", 0);//get the headset microphone property
if( (headSetState == 0) && (hasMicrophone == 0)) //headset was unplugged & has no microphone
{
//do whatever
}
}
}
调用这个方法如下
IntentFilter receiverFilter = new IntentFilter(Intent.ACTION_HEADSET_PLUG);
HeadSetBroadCastReceiver receiver = new HeadSetBroadCastReceiver();
registerReceiver( receiver, receiverFilter );
我也在 list 中将其注册为
<receiver android:name=".HeadsetBroadCastReceiver">
<intent-filter>
<action android:name="android.intent.action.ACTION_HEADSET_PLUG"/>
</intent-filter>
</receiver>
和权限
但这行不通,谁能指导我解决这个问题?
最佳答案
这是一个棘手的问题,但您可以使用 BroadCast 作为 Following 与我一起工作在您的 Activity
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
myReceiver = new HeadSetReceiver();
}
并在 onResume() 方法中注册您的广播
public void onResume() {
IntentFilter filter = new IntentFilter(Intent.ACTION_HEADSET_PLUG);
registerReceiver(myReceiver, filter);
super.onResume();
}
然后在你的 Activity 中声明你的 BroadCast
private class HeadSetReceiver extends BroadcastReceiver {
@Override public void onReceive(Context context, Intent intent) {
if (intent.getAction().equals(Intent.ACTION_HEADSET_PLUG)) {
int state = intent.getIntExtra("state", -1);
switch (state) {
case 0:
Log.d(TAG, "Headset unplugged");
break;
case 1:
Log.d(TAG, "Headset plugged");
break;
}
}
}
}
希望对你有帮助,,,
关于android - 用于拔下耳机的 BroadcastReceiver,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11716275/
我有一个带有对话框的应用程序。我想知道什么时候拔下扩展监视器,以便我可以将应用程序窗口移动到主监视器(如果应用程序在扩展监视器中)。我还想知道用户何时对扩展显示器位置进行更改。 发生这种情况时是否有
有没有办法在 USB 电缆断开后继续使用 Eclipse 进行调试。 应用程序以 Debug模式启动,USB 电缆断开连接,然后重新连接。现在我想继续调试。这是否可以在不重新启动应用程序的情况下实现?
我想在拔掉 USB 时停止正在运行的服务。 在我的 Activity onCreate 中,我检查其 action 的 Intent if (getIntent().getAction().e
有没有办法使用 Qt 发送信号或任何其他方式来判断 USB 串行电缆是否已拔出? 最佳答案 您可以在 QtSerialPort 附加组件中使用 QSerialPort 类的 error 信号。在我们的
我有一个连接到 USB 配件的应用程序。很简单,但即使拔下 USB 数据线后配件仍保持连接状态。 这是我的代码: public boolean checkOpenAccessory(){
我在 bash 中有这个脚本 tahat 应该检查机器中是否存在 USB 设备,如果不存在则重新启动它: #!/bin/bash UNPLUG_MESSAGE="PLEASE UNPLUG THE U
我有一个 python3.2 脚本在 raspberry pi - Raspbian 操作系统启动时从 rc.local 运行,它导入一个名为 inouts.py 模块的文件,我制作并位于同一目录中,
我是一名优秀的程序员,十分优秀!