Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/216.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Android L中以编程方式打开来电扬声器?_Android_Android Intent_Android Audiomanager - Fatal编程技术网

如何在Android L中以编程方式打开来电扬声器?

如何在Android L中以编程方式打开来电扬声器?,android,android-intent,android-audiomanager,Android,Android Intent,Android Audiomanager,我想在Android 5.0中使用我手机的接听电话GUI(phone's GUI)来接听来电。我找到了一种方法,需要制作一个活动,用于发送一些操作以打开手机的GUI。我成功地打开了手机的GUI以接听来电。问题是如何打开手机GUI的扬声器。我尝试了这个代码,但它没有打开。你能帮我用Android L解决这个问题吗 audioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE); audioManager.setMode(A

我想在Android 5.0中使用我手机的接听电话GUI(phone's GUI)来接听来电。我找到了一种方法,需要制作一个活动,用于发送一些操作以打开手机的GUI。我成功地打开了手机的GUI以接听来电。问题是如何打开手机GUI的扬声器。我尝试了这个代码,但它没有打开。你能帮我用Android L解决这个问题吗

audioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
audioManager.setMode(AudioManager.MODE_IN_CALL);
if (!audioManager.isSpeakerphoneOn())
     audioManager.setSpeakerphoneOn(true);
audioManager.setMode(AudioManager.MODE_NORMAL);
显示

<uses-permission android:name="android.permission.CALL_PHONE"/>
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS"/>
<uses-permission android:name="android.permission.RECORD_AUDIO"/>
<uses-permission android:name="android.permission.MODIFY_PHONE_STATE" />

最后,我找到了解决办法。我把上面的代码放在一个线程中运行。它工作得很好。这是我的密码。希望它能帮助别人

            Thread thread = new Thread() {
                @Override
                public void run() {
                    try {
                        while(true) {
                            sleep(1000);
                            audioManager.setMode(AudioManager.MODE_IN_CALL);
                            if (!audioManager.isSpeakerphoneOn())
                                audioManager.setSpeakerphoneOn(true);
                        }
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                }
            };

            thread.start();

我遇到了这个解决方案。希望对你有帮助

final static int FOR_MEDIA = 1;

final static int FORCE_NONE = 0;

final static int FORCE_SPEAKER = 1;

Class audioSystemClass = Class.forName("android.media.AudioSystem");

Method setForceUse = audioSystemClass.getMethod("setForceUse", int.class, int.class);

setForceUse.invoke(null, FOR_MEDIA, FORCE_SPEAKER);

我以前尝试过该链接,但它不适用于我的手机如果您使用的是API级别>=23,请检查运行时权限,如果可能,请检查logcat您可能会收到任何类型的错误或警告,然后将其放入here@Vickyexpert:对不起,我迟了答复。我试图显示日志或警告,但它没有警告。我使用的是Android level 21。我无法打开接听电话,我不确定,如果可以使用SDK完成,但是你可以用Xposed moduleHi@jame来实现这一点,我正在尝试完成类似的事情,我有几部手机没有振铃器工作,我正在尝试开发一个应用程序,当我接到电话时,可以使用扩音器,当我把它靠近我的手机时,可以通过显示器的传感器转动和扬声器切换到耳机。有什么解决办法吗?为什么需要线程?为什么不在UI线程上运行呢?为我工作…它在android 10中为你工作吗?对我来说,它不起作用。请给出建议。这是胡说八道。。。我们为什么要这样做。该死的???我在想,有什么方法可以切换手机应用程序上的扬声器模式开关之类的!至少能起作用,哈哈。非常感谢。编辑:实际上不需要while循环。只要把它放在一根线里就行了。也许它只是不能在主线程上运行或者其他什么。有趣。终于工作了。。。
final static int FOR_MEDIA = 1;

final static int FORCE_NONE = 0;

final static int FORCE_SPEAKER = 1;

Class audioSystemClass = Class.forName("android.media.AudioSystem");

Method setForceUse = audioSystemClass.getMethod("setForceUse", int.class, int.class);

setForceUse.invoke(null, FOR_MEDIA, FORCE_SPEAKER);