4357


Android
アプリで､アプリを起動したタイトル画面にて効果音を自動的に鳴らしたいのですが､どのようにすればよいのでしょうか｡検索をしてみたのですが､ボタンを押した時のコードは出てくるものの、自動的にというものはないので、教えていただきたいです｡

[code]

    private SoundPool mSoundPool;
    private int mSoundId;
    
    @Override
    protected void onStart() {
        // TODO 自動生成されたメソッド・スタブ
        super.onStart();
        mSoundPool = new SoundPool(1, AudioManager.STREAM_MUSIC, 0);
        mSoundId = mSoundPool.load(this, R.raw.wolf, 1);
    }
    
    @Override
    protected void onResume() {
        // TODO 自動生成されたメソッド・スタブ
        super.onResume();
        mSoundPool.play(mSoundId, 1, 1, 0, 0, 1);
    }
    
    @Override
    protected void onPause() {
        // TODO 自動生成されたメソッド・スタブ
        super.onPause();
        mSoundPool.release();
    }
    
[/code]

このように書いて見たのですが､アプリ起動しただけでは音が出ません｡  
ちなみにボタンクリックでは音が出ました｡


CC BY-SA 3.0
2015-01-10T02:49:50.507
4355
2015-01-10T03:25:16.667
2015-01-10T03:04:51.547
4978
7232
question
android java
アプリのスタート画面で、効果音を自動再生するには


`sample 1 not ready`のようなエラーログが出ていませんか？

音ファイルの読み込み処理`mSoundPool.load(this, R.raw.wolf,
1)`は重い処理なので、読み込みが終わるまで待たなくてはいけません。読み込む前に音ファイルを再生するとこけます。

読み込み処理が終わるのを待つには`setOnLoadCompleteListener`を使用します。

**実装例:**

[code]

    soundPool.setOnLoadCompleteListener(new OnLoadCompleteListener() {
        @Override
        public void onLoadComplete(SoundPool soundPool, int sampleId, int status) {
            // TODO Auto-generated method stub
            mSoundPool.play(mSoundId, 1, 1, 0, 0, 1);
        }
    });
    
[/code]

ボタン押下で音が出ていたのは、多分読み込み処理が終わった後に再生していたからだと思います。多分。


CC BY-SA 3.0
2015-01-10T03:15:14.813
4357
2015-01-10T03:25:16.667
2015-01-10T03:25:16.667
208
2904
4355
answer