簡體   English   中英

如何在旅途中調節SoundPool的音量?

[英]How to adjust SoundPool sound volume on the go?

我正在嘗試創建將連續播放兩個短聲音的android應用。 我必須隨時隨地調節音量,應該是立體聲。 我的意思是左邊的音量可能會變大,而右邊的音量可能會變安靜。 我該如何實現? 我創建了如下的AsyncTask,並且我將同時運行其中的兩個。 這是正確的方法嗎?

private class PlaySoundTask extends AsyncTask<Void, Void, Void> {

    @Override
    protected void onCancelled() {
        super.onCancelled();
    }

    @Override
    protected void onPreExecute() {

    SoundPool sndPool = new SoundPool(16, AudioManager.STREAM_MUSIC, 100);
    sndPool.load(R.raw.soundOne, 1);

    }

    @Override
    protected Void doInBackground(String... params) {
        while (m_stop_sound) {


            sndPlay.play(R.raw.soundOne, 1, 0, 0);


        }
        return null;
    }
}

不,由於簡單原因,此方法不正確。 根據您所運行的版本,兩個AsyncTask可能無法同時運行:

https://groups.google.com/forum/?fromgroups#!topic/android-developers/8M0RTFfO7-M

您可以使用AsyncTask.executeOnExecutor(...)覆蓋此行為,但是仍然可以從API 11開始定位系統,該API大約占可用設備的60%:

http://developer.android.com/about/dashboards/index.html

此外, AsyncTask不適用於長時間運行的操作,因為它們很容易被系統殺死以獲取內存。 如果它包含不再使用的活動的引用,則可能導致內存泄漏。

使用您自己的Thread並可能使用Handler來通知UI線程。 另外在這里看看:

長期運行的Android AsyncTask

建議將RoboSpice作為AsyncTask的即用型安全替代品。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM