1

我試圖使揚聲器,而我在一個電話:Audiomanager喇叭不能正常工作

final AudioManager audioManager = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE); 
audioManager.setSpeakerphoneOn(true); 

我試過setSpeakerphoneOn()後檢查audiomanager並獲得揚聲器仍然不問isSpeakerphoneOn()

audioManager.isSpeakerphoneOn(); 

在我的日誌,我可以看到一些錯誤,我無法理解:

E/AudioManager: Don't setBluetoothScoOn-PackageName: com.myapp.app on = false 
E/AudioManager: Don't setSpeakerphoneOn-PackageName: com.myapp.app on = true 

我在論壇中找不到有關此錯誤的任何信息。

沒有在設備上工作:中興Z981,華爲p9,我已經試過thisandroid.permission.MODIFY_AUDIO_SETTINGS被授予。

回答

1

加入這行我發現setMode()(當前模式)之前setSpeakerphoneOn()定影在logcat的誤差:

AudioManager audioManager = (AudioManager)getApplicationContext().getSystemService(Context.AUDIO_SERVICE); 
audioManager.setMode(AudioManager.MODE_IN_CALL); 
audioManager.setSpeakerphoneOn(true); 
2

喜讀Android開發者的文章

https://developer.android.com/reference/android/media/AudioManager.html

解釋清楚

需要設置權限:許可權在明顯

清單中

<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" /> 
+0

需要許可:許可權。 –

+0

我讀過。我已經有了這個權限。它已經可以在除中興通訊外的所有設備上工作 – motis10

+0

此常數在API級別5中已棄用。請勿直接設置音頻路由,請改用setSpeakerphoneOn(),setBluetoothScoOn()方法。 –

0

setSpeakerphoneOn() 1.僅工作setMode(AudioManager.MDOE_IN_CALL);