如何在通话后以编程方式关闭扬声器电话,Android?
我把底层代码放在线程中运行。它工作得很好。这是我的密码。希望它能帮助别人如何在通话后以编程方式关闭扬声器电话,Android?,android,android-intent,Android,Android Intent,我把底层代码放在线程中运行。它工作得很好。这是我的密码。希望它能帮助别人 Intent callIntent = new Intent(Intent.ACTION_CALL); callIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); callIntent.setData(Uri.parse("tel:" + sharedPreferencesUtils.getStringFromSharedPreferences(KEY_SP_MOBILE_NUM
Intent callIntent = new Intent(Intent.ACTION_CALL);
callIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
callIntent.setData(Uri.parse("tel:" + sharedPreferencesUtils.getStringFromSharedPreferences(KEY_SP_MOBILE_NUMBER, context.getApplicationContext())));
context.getApplicationContext().startActivity(callIntent);
Thread thread = new Thread() {
@Override
public void run() {
try {
while(true) {
sleep(300);//1000
audioManager = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);
audioManager.setMode(AudioManager.MODE_IN_CALL);
if (!audioManager.isSpeakerphoneOn()) {
audioManager.setSpeakerphoneOn(true);
}
}
} catch (InterruptedException e) {
e.printStackTrace();
}
}
};
thread.start();
请确保在清单中包含“修改音频设置”权限。试试这个
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); //or false
}
} catch (InterruptedException e) {
e.printStackTrace();
}
}
};
thread.start();
为此,您应该在清单中添加“修改音频设置”权限。您只需从此处复制粘贴即可:您应该在注释中为已给出的答案添加链接。Hii,我得到了此最终处理程序=新处理程序的解决方案;handler.postDelayednew Runnable{@Override public void run{audioManager=audioManager context.getSystemServiceContext.AUDIO_服务;audioManager.setModeAudioManager.MODE_在_调用中;audioManager.SetPeakerPhoneContrue;}},1000;我已经把这个代码放在处理程序中,然后从应用程序生成呼叫正在扬声器电话上进行,我们从defalut call应用程序拨打的其他呼叫正在进入正常模式,接听呼叫也进入正常模式。这工作正常。
audiomanager.setSpeakerphoneOn(false)