我的要求是每当拨打电话时打开免提电话.我尝试了以下代码,但它无法正常工作.事实上,扬声器电话在通话中间打开,第二个电话来了!
package in.co.allsolutions;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.telephony.TelephonyManager;
import android.util.Log;
//import android.view.View;
import android.widget.Toast;
import android.media.AudioManager;
public class MyTelephonyBroadcastReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
AudioManager audioManager = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);
audioManager.setSpeakerphoneOn(true);
Bundle extras = intent.getExtras();
if (extras != null) {
String state = extras.getString(TelephonyManager.EXTRA_STATE);
Log.i("AS", "Message Received. State = " + state + ", Mode = " + audioManager.getMode());
//audioManager.setMode(AudioManager.MODE_NORMAL);
//audioManager.setSpeakerphoneOn(true);
// if (state.equals("OFFHOOK"))
// {
//audioManager.setMode(AudioManager.MODE_CURRENT);
//audioManager.setSpeakerphoneOn(true);
//audioManager.setMode(AudioManager.MODE_IN_CALL);
//audioManager.setSpeakerphoneOn(true); …Run Code Online (Sandbox Code Playgroud) 大家好,我在Huawei手机上的音频管理器有问题。我有一个应用程序,可以在通话过程中将通话语音从蓝牙耳机路由到听筒或扬声器。它在除华为手机以外的所有手机上都能正常工作。我添加了所有权限,这是需要的。有人有类似情况吗?
<permission android:name="android.permission.INTERACT_ACROSS_USERS_FULL" android:protectionLevel="signature"/>
<uses-permission android:name="android.permission.CALL_PHONE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.PROCESS_OUTGOING_CALLS" />
<uses-permission android:name="android.permission.PROCESS_INCOMING_CALLS" />
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
<uses-permission android:name="android.permission.BLUETOOTH" />
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
Run Code Online (Sandbox Code Playgroud)
这部分代码对华为没有任何作用。尝试过的try / catch,但没有例外。
private static void switch_to_earpiece () {
m_amAudioManager = (AudioManager) fa.getSystemService(fa.AUDIO_SERVICE);
m_amAudioManager.setMode(AudioManager.MODE_IN_CALL);
m_amAudioManager.stopBluetoothSco();
m_amAudioManager.setBluetoothScoOn(false);
m_amAudioManager.setSpeakerphoneOn(false);
}
Run Code Online (Sandbox Code Playgroud) 带到这里是我的活动打电话的代码
public void makeAPhoneCallWithSpeakerOn()
{
String uri = "tel:" + posted_by.trim() ;
Intent intent = new Intent(Intent.ACTION_CALL);
intent.setData(Uri.parse(uri));
startActivity(intent);
}
Run Code Online (Sandbox Code Playgroud)
问题是:
如何拨打电话并打开扬声器?
10X Elad