- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我使用的是运行 android 2.3.6 的 LG 手机 (L38C)。我无法以编程方式从蓝牙耳机获取音频输入。这似乎是一个常见问题,但我的研究并没有得出任何解决方案。我已尝试此处提出的解决方案,但未触发 CO_AUDIO_STATE_CONNECTED 事件。
Using the Android RecognizerIntent with a bluetooth headset
有什么想法吗?
PS:当我调用 start() 函数时,我的耳机 (JABRA BT2046) 已配对并连接到电话音频。
最佳答案
在我的例子中,如果用户想在 Voip 通话期间使用蓝牙耳机,我正在寻找一种在用户单击按钮时连接蓝牙设备的方法。
我在三星 S7 SM-G930F 和 Android 7.0 版本上测试的解决方案是:
public class ExampleActivity extends Activity{
private AudioManager mAudioManager;
private BroadcastReceiver mBroadcastReceiver;
@Override
public void onCreate(@Nullable Bundle savedInstanceState, @Nullable PersistableBundle persistentState)
{
super.onCreate(savedInstanceState, persistentState);
setContentView(R.layout.example_activity);
initActivity();
IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction(AudioManager.ACTION_SCO_AUDIO_STATE_UPDATED);
registerReceiver(mBroadcastReceiver, intentFilter);
}
@Override
public void onDestroy()
{
super.onDestroy();
unregisterReceiver(mBroadcastReceiver);
}
private void initActivity()
{
initBroadcasrReceiver();
initAudioManager();
}
private void initBroadcasrReceiver()
{
mBroadcastReceiver = new BroadcastReceiver()
{
@Override
public void onReceive(Context context, Intent intent)
{
if (intent.getAction().equals(AudioManager.ACTION_SCO_AUDIO_STATE_UPDATED))
{
int scoAudioState = intent.getIntExtra(AudioManager.EXTRA_SCO_AUDIO_STATE, -1);
if(scoAudioState == AudioManager.SCO_AUDIO_STATE_CONNECTED)
{
// This method should be called only after SCO is connected!
mAudioManager.setBluetoothScoOn(true);
}
}
}
};
}
private void initAudioManager()
{
mAudioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
resetSco();
mAudioManager.startBluetoothSco();
}
private void resetSco()
{
mAudioManager.setMode(AudioManager.MODE_NORMAL);
mAudioManager.stopBluetoothSco();
mAudioManager.setBluetoothScoOn(false);
mAudioManager.setSpeakerphoneOn(false);
mAudioManager.setWiredHeadsetOn(false);
}}
连接 SCO 后,您将能够听到和说话从您的蓝牙设备。希望对您有所帮助。
关于Android startBluetoothSco() 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24154643/
我使用的是运行 android 2.3.6 的 LG 手机 (L38C)。我无法以编程方式从蓝牙耳机获取音频输入。这似乎是一个常见问题,但我的研究并没有得出任何解决方案。我已尝试此处提出的解决方案,但
我有一个使用 ICS 的用户发送的堆栈跟踪。 在我的 Froyo 设备上一切正常,但当 AudioManager.startBluetoothSco() 被调用时,用户显然得到了权限拒绝...我不知道
如果我想为 AudioManager.startBluetoothSco() 函数设置限制,我应该在哪里设置?从这里: http://developer.android.com/reference/a
调用AudioManager.startBluetoothSCO()时在 list 中以 API 级别 18 或更高级别为目标时,文档指出已建立原始音频连接,如果以 API 17 或更低级别为目标,则
我正在使用反射来调用 AudioManager.startBluetoothSco() 方法。它必须通过反射来完成,因为它只存在于 2.2 或更高版本的 SDK 中,但我的应用程序是为 2.0 的最低
我创建了一个带有示例项目的 GitHub 存储库,该项目显示了我在这里询问的以下问题: https://github.com/paulpv/audio-loopback/tree/simplified
我是一名优秀的程序员,十分优秀!