标签: headset

Android:强制外部麦克风(插孔输入3.5毫米)保持开启状态

如何强制Android系统选择3.5mm插孔作为我的麦克风源?我正在使用AudioRecord类进行录制.

我正在使用外置麦克风.当检测到一切正常时,但有时无法自动检测外部麦克风.TRRS分配器(便宜3美元的东西)用于将3.5毫米插孔分成单独的麦克风和耳机插孔(我需要同时录制和播放).

不推荐使用AudioManager.setWiredHeadsetOn(),并且说明不要使用它.

1)我是否需要额外的外部硬件来提供正确的麦克风阻抗?

2)我可以强制输入代码吗?

3)这个级别的自定义ROM归档音频控制 - 也许这是最好的选择吗?

谢谢

android microphone headset android-audiomanager

10
推荐指数
1
解决办法
1万
查看次数

检测耳机按钮点击iPhone SDK

有没有办法检测耳机的播放/暂停按钮点击?

我设法使用以下方法检测音量按钮点击:

AudioSessionAddPropertyListener( kAudioSessionProperty_CurrentHardwareOutputVolume , audioVolumeChangeListenerCallback, self );
Run Code Online (Sandbox Code Playgroud)

但我找不到中心按钮的AudioSessionProperty.这样做的方法是什么?

iphone sdk detect headset

9
推荐指数
1
解决办法
8984
查看次数

如何将Android设备用作另一部手机的蓝牙耳机?

我想让我的Android设备作为蓝牙耳机工作.我搜索Android API,但我发现一些界面可以让Android设备作为主设备工作,而不是作为设备(蓝牙耳机).我也准备修改Android操作系统的源代码,并重建操作系统.我希望,当Android设备连接到带蓝牙的手机时,Android设备可以作为蓝牙耳机使用.我不知道是否有接口可以做到这一点,还是我应该修改Android操作系统?谢谢!

android bluetooth headset

7
推荐指数
1
解决办法
1万
查看次数

广播接收器最高优先级不工作

我正在使用ACTION_MEDIA_BUTTON处理程序执行一个应用程序,但它似乎总是被MX Player或Apollo截获,我没有得到Intent

我已尝试在标记中设置1000和2147483647优先级,并在构造函数后直接使用setPriority

当没有MX Player或Apollo时,应用程序可以正常运行

我也试过使用谷歌播放的Headset拦截器应用程序,我试图通过自动启动应用程序拒绝事件到MX Player - 没什么帮助

in onCreate:

IntentFilter filter = new IntentFilter(Intent.ACTION_MEDIA_BUTTON);
filter.addAction(Intent.ACTION_HEADSET_PLUG);
filter.setPriority(1000);
registerReceiver(receiver, filter);
Run Code Online (Sandbox Code Playgroud)

在接收者

@Override
public void onReceive(Context context, Intent intent) {
    if (Intent.ACTION_MEDIA_BUTTON.equals(intent.getAction())) {
        // NEVER REACHES HERE WHEN MX PLAYER PRESENT. WORKS IF NOT
Run Code Online (Sandbox Code Playgroud)

在清单中

<receiver
    android:name="BCreceiver"
    android:enabled="true">
    <intent-filter android:priority="1000">
        <action android:name="android.intent.action.MEDIA_BUTTON" />
        <action android:name="android.intent.action.HEADSET_PLUG" />
    </intent-filter>
</receiver>
Run Code Online (Sandbox Code Playgroud)

android broadcast headset android-intent

7
推荐指数
2
解决办法
2万
查看次数

MediaButtonReceiver无法使用MediaBrowserServiceCompat

我正在尝试从耳机或汽车控制(播放/暂停/等)接收媒体按钮事件

这是我的应用清单.

<service android:name=".mediaPlayerService.MediaPlayerService"
         android:exported="true">
    <intent-filter>
        <action android:name="android.media.browse.MediaBrowserService"/>
    </intent-filter>
</service>

<!--
A receiver that will receive media buttons and send as
intents to your MediaBrowserServiceCompat implementation.
Required on pre-Lollipop. More information at
http://developer.android.com/reference/android/support/v4/media/session/MediaButtonReceiver.html
-->
<receiver android:name="android.support.v4.media.session.MediaButtonReceiver">
    <intent-filter>
        <action android:name="android.intent.action.MEDIA_BUTTON"/>
    </intent-filter>
</receiver>
Run Code Online (Sandbox Code Playgroud)

这是我的MediaPlayerService的一部分

public class MediaPlayerService extends MediaBrowserServiceCompat {

@Override
public void onCreate()
{
    super.onCreate();
    initMediaSessions();
}

private void initMediaSessions()
{
    mSession = new MediaSessionCompat(getApplicationContext(), MediaPlayerService.class.getSimpleName());
    setSessionToken(mSession.getSessionToken());

    mSession.setCallback(new MediaSessionCompat.Callback()
                         {
                            //callback code is here.     
                         }            
    );
}

@Override
public int onStartCommand(Intent …
Run Code Online (Sandbox Code Playgroud)

android headset android-mediasession

7
推荐指数
1
解决办法
6586
查看次数

Android:处理耳机按钮事件和向MainActivity发送信息

这是我努力制作一个工作代码来处理耳机按钮事件的最佳方式.我阅读了Android开发人员指南,但这显然是错误的,因为他们要求开始监听注册类名.

am.registerMediaButtonEventReceiver(RemoteControlReceiver); // Wrong
Run Code Online (Sandbox Code Playgroud)

所以我查看其他示例以更正代码.例如,在这个问题中已经发布了许多秘密建议,我还尝试了其他代码,例如这个,以及MediaSession的另一个解决方案,并清理不需要的我写了这段代码:

我实现了RemoteControlReceiver类.显然,不需要静态内部类,事实上,请看这条评论:

public class RemoteControlReceiver extends BroadcastReceiver {

        public RemoteControlReceiver() {
            super();
        }

        @Override
        public void onReceive(Context context, Intent intent) {
            Toast.makeText(context, "EVENT!!", Toast.LENGTH_SHORT).show();
            if (Intent.ACTION_MEDIA_BUTTON.equals(intent.getAction())) {
                KeyEvent event = (KeyEvent) intent.getParcelableExtra(Intent.EXTRA_KEY_EVENT);
                if (KeyEvent.KEYCODE_MEDIA_PLAY == event.getKeyCode()) {
                    Toast.makeText(context, "EVENT!!", Toast.LENGTH_SHORT).show();

                }
            }
        }
    }
Run Code Online (Sandbox Code Playgroud)

然后我在MainActivity onCreate(){ ...中注册了意图

    AudioManager am = (AudioManager) this.getSystemService(Context.AUDIO_SERVICE);
    ComponentName mReceiverComponent = new ComponentName(this, RemoteControlReceiver.class);
    am.registerMediaButtonEventReceiver(mReceiverComponent);
Run Code Online (Sandbox Code Playgroud)

registerMediaButtonEventReceiver被弃用了......

在清单中我记录了过滤器,在活动标记之后:

<activity>
... …
Run Code Online (Sandbox Code Playgroud)

android headset

7
推荐指数
1
解决办法
4356
查看次数

如何使A2DP和HSP同时工作

我有一个蓝牙耳机.将其连接到Windows 10时,它会在"播放设备"列表中安装两个配置文件:

  1. 免提.(HSP简介)

  2. 立体声.(A2DP简介)

第二个(立体声)设置为系统上的"默认设备"和"默认通信设备".

当我启动任何使用麦克风的程序(录音机,聊天,VoIP呼叫,游戏等)时声音突然停止工作我只能使用麦克风直到我停止录音机或通话.

为了再次启用声音,我需要使Hand-Free(HSP)配置文件处理输入和输出(声音和麦克风).不幸的是,HSP的音质非常差.

我想知道如果有方法,使用代码,我可以改变蓝牙行为,以便两个配置文件同时工作.一个处理声音,一个处理麦克风,所以我可以有高品质的声音,同时使用麦克风.

audio communication bluetooth headset a2dp

7
推荐指数
1
解决办法
1868
查看次数

如何获取有关CONNECTED bluetooth device for android的信息?

如果我的Android手机已经连接了蓝牙耳机(配对并连接).我如何获得有关该特定耳机的信息.

使用getBondedDevices()方法我获得所有配对设备的列表.我只需要有关CONNECTED设备的信息.

我不能等待广播接收器检查状态,因为我在申请开始时需要这些信息.所以请建议有没有办法获得这些信息,而无需等待广播.

bluetooth headset

6
推荐指数
1
解决办法
1万
查看次数

使用android.net.rtp进行VoIP

我正在尝试使用该android.net.rtp库来制作VoIP应用程序.它的音频流可以正确发送和接收.

我的问题是:被叫方手机的扬声器工作正常,但耳机始终静音(即使我关闭扬声器).

我的代码:

AudioManager Audio = (AudioManager) getSystemService(Context.AUDIO_SERVICE); 
Audio.setMode(AudioManager.MODE_IN_COMMUNICATION);
Audio.setSpeakerphoneOn(true);
Audio.setMicrophoneMute(false);
sender = new RtpStreamSender(null, "169.0.199.19", AudioCodec.PCMU);
Run Code Online (Sandbox Code Playgroud)

android rtp speaker headset

6
推荐指数
1
解决办法
526
查看次数

从定制的蓝牙设备发送命令到 Android 手机来控制音乐播放器

我使用以下组件创建了一个简单的蓝牙设备

  • HC05模块
  • Arduino Uno 板(带有可重新编程的微控制器)

我想知道是否可以从我的 BT 设备发送命令,就像这些命令是从蓝牙耳机发送的一样?

我的意思是:

  • 我们发送 0x00000055 键码 - 音乐暂停 (KEYCODE_MEDIA_PLAY_PAUSE)
  • 我们发送 0x00000058 - 上一首歌曲开始播放 (KEYCODE_MEDIA_PREVIOUS)
  • ...

以下是 android 使用的键码的完整列表:http://developer.android.com/reference/android/view/KeyEvent.html

我可能可以创建一个单独的应用程序,它将读取传入的命令并模拟耳机按钮的按下,但这不是我想要的。就我而言 - 一些耳机是即插即用的,这意味着 Android 设备上不需要安装任何其他应用程序。这是我目前用来向 Android 手机发送命令的代码:

#include <SoftwareSerial.h>

SoftwareSerial BTSerial(10, 11); // RX | TX

enum { LED_PIN = 6 };
enum LedState { LED_ON, LED_OFF, LED_BLINK };

LedState led_state;

void setup()
{
  led_state = LED_OFF;
  pinMode(LED_PIN, OUTPUT);

  pinMode(9, OUTPUT);
  digitalWrite(9, LOW);
  Serial.begin(9600);
  Serial.println("Enter AT commands:");
  BTSerial.begin(38400);  // HC-05 default speed in AT command …
Run Code Online (Sandbox Code Playgroud)

bluetooth arduino headset

6
推荐指数
1
解决办法
6420
查看次数