android - 接听电话时以编程方式激活扬声器

标签 android

嘿..我打算在我的应用程序中添加一个功能,当用户接到电话时会自动打开扬声器..

这是我的部分代码:

  case TelephonyManager.CALL_STATE_OFFHOOK:
              //CALL_STATE_OFFHOOK; 

              setVolumeControlStream(AudioManager.STREAM_VOICE_CALL); 
               am.setMode(AudioManager.MODE_IN_CALL); 
               am.setSpeakerphoneOn(true);
          boolean check = am.isSpeakerphoneOn();
          Toast.makeText(Speaker.this, "LoudSpeaker On: "+ check,Toast.LENGTH_LONG).show();

而且我已经在 list 中添加了 MODIFY_AUDIO_SETTINGS 的权限..但是..扬声器无法打开..任何人都可以帮助解决这个问题..在此先感谢..顺便说一下..这个应用程序是在 android 2.1 中实现的

最佳答案

尝试在开机前保持 500 ms ..

所以它会是这样的:

  case TelephonyManager.CALL_STATE_OFFHOOK:
        // CALL_STATE_OFFHOOK;
        try {
            Thread.sleep(500); // Delay 0,5 seconds to handle better turning on
                                // loudspeaker
        } catch (InterruptedException e) {
        }
        setVolumeControlStream(AudioManager.STREAM_VOICE_CALL);
        am.setMode(AudioManager.MODE_IN_CALL);
        am.setSpeakerphoneOn(true);
        boolean check = am.isSpeakerphoneOn();
        Toast.makeText(Speaker.this, "LoudSpeaker On: " + check,
                Toast.LENGTH_LONG).show();

顺便说一句,我有 Xperia 4.1.2,您的初始代码没有任何问题..

关于android - 接听电话时以编程方式激活扬声器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4320325/

相关文章:

android - 如何将Facebook Connect与Android集成

java - 如何强制关闭所有声音

android - 使用MVNO时如何查找运营商名称? (我想要通知栏中写的那个)

java - 屏幕关闭时计时器停止工作

android - 从 Activity 到 Main Activity 的返回列表?

android - Swift 在 Kotlin 中的 replaceSubrange

android - 找不到 Gradle DSL 方法 : 'android()' opening project in android studio 1. 4

Android 音频和视频无法在加载的 HTML 页面的 webview 上播放

java - 如何在 Tab 布局中设置 Tab 宽度?

android - 具有自定义布局的 SwitchPreference 监听器