2015-06-21 64 views
0

我正在使用Cordova v4.1.2。該應用程序默認使用媒體音量,我希望它使用鈴聲音量來播放它播放的聲音。 (像在WhatsApp中)Cordova應用程序 - 在Android中使用鈴聲音量而不是媒體

我在onCreate()函數中使用了setVolumeControlStream(AudioManager.STREAM_VOICE_CALL);。但它給出了一個錯誤。

這是我的CordovaApp.java。 (在平臺\機器人的\ src \ COM \ XX \ XX)

import android.os.Bundle; 
import org.apache.cordova.*; 

public class CordovaApp extends CordovaActivity 
{ 
    @Override 
    public void onCreate(Bundle savedInstanceState) 
    { 
     super.onCreate(savedInstanceState); 
     super.init(); 
     // Set by <content src="index.html" /> in config.xml 
     loadUrl(launchUrl); 
     setVolumeControlStream(AudioManager.STREAM_VOICE_CALL); 
    } 
} 

它顯示上運行的以下錯誤:

enter image description here

沒有任何錯誤,當我從刪除行setVolumeControlStream(AudioManager.STREAM_VOICE_CALL); java文件,並且該應用程序運行完美。有關如何解決這個問題的任何意見?

回答

1

我自己修復了。如果你是一個Android極客,真的很容易,但無論如何這樣的問題以前從未問過,所以我會爲其他人遇到同樣的問題發佈答案。

我正確地改變了音頻流,但我改變了錯誤的文件!衛生署!

這是你應該改變它..

\platforms\android\CordovaLib\src\org\apache\cordova\CordovaActivity.java 

在行351將其更改爲setVolumeControlStream(AudioManager.STREAM_RING);

如果你想,雖然使用的鈴聲音量。

如果您構建並按下硬件音量鍵,它將會改變並顯示爲當然使用鈴聲音量。但我的情況有點不同。

我正在使用cordova Media插件org.apache.cordova.media。所以當我使用這個插件播放音頻時,它將流重新連接回媒體流(STREAM_MUSIC)。我回到了零點。這個想法是重新連接插件本身以使用您選擇的音頻流。沒有火箭科學,只需在2個文件中更改2行。

文件:

\platforms\android\src\org\apache\cordova\media\AndroidHandler.java 

383線:

setVolumeControlStream(AudioManager.STREAM_RING); 

文件:

\platforms\android\src\org\apache\cordova\media\AudioPlayer.java 

行526:

setVolumeControlStream(AudioManager.STREAM_RING); 

你很好去。請記住用您想要的音頻流替換STREAM_RING。

+0

任何機會,這可能會成爲一個插件? – RangerMauve

+0

請注意,在Media插件的最新版本中,插件文件是AudioHandler.java,方法名稱onFirstPlayerCreated,當前在行號468處。它在創建第一個播放器時設置VolumeControlStream,並在將其重置爲前一個時將其重置爲最後一名球員已經被釋放。 –

相關問題