オーロラプッシュカスタムnotification sound+SoundPoolの使用
2449 ワード
需要から言えば、製品マネージャー/社長は、お客様がプッシュ通知が届いたときに声がしたいと言っています.会社の特色を際立たせるために、自分で通知音を定義して入れましょう.このようなニーズiOSを実現するのは簡単ですが、ドキュメントに従って要求に合致するフォーマット(30秒を超えない)をドラッグします.例えばnotifと呼ばれます.Cafはプロジェクトルートディレクトリに配置し、オーロラプッシュ時にsoundフィールドをnotifに設定する.Cafでいいです.Androidでは、ui+サウンドを含むnotificationのスタイルを完全にカスタマイズする方法がいくつかあります.しかし、私たちはずっとデフォルトでよく使う必要はありません.選択した案はuiがオリジナルで、バックグラウンドでプッシュするときにandroidに送信したのは無声で、onReceive()で自分でカスタム音声を再生します.そこでSoundPoolを調べると乾き、apiを見るのは簡単です.sound poolを新しく作って、loadをロードして、コードが自然に出てきました.
新しい1つを作成して、再生の成功を保証するためにloadの成功したコールバックの中で再生したほうがいいです.結果asの自動補完はこのようなコードに与えられました.
うん?i,i 1なんて(パラメータネーミングの重要性について......)、状態なんて関係ないに違いない.そして中でプレイし、プレイ関数の署名は以下の通りです.
そこで穴の中に落ちました
soundIDですか、そのres idもidですから、入れるのが合理的で、コンパイル-合格、実行-合格、テスト-音がしません.のいくつかのandroidバージョンのテスト機を変えたのか、それともそうなのか、犬の兄の家を探してみると、そうだったことに気づいた.
あの2つのasは自業自得で私に補完してくれたパラメータの原名はsampleIdとstatusで、ほほほ.幸いにも30分しか無駄にしなかったのですが・・・
SoundPool.Builder builder = new SoundPool.Builder();
builder.setMaxStreams(1);
AudioAttributes.Builder attrBuilder = new AudioAttributes.Builder();
attrBuilder.setLegacyStreamType(AudioManager.STREAM_ALARM);
builder.setAudioAttributes(attrBuilder.build());
SoundPool soundPool = builder.build();
新しい1つを作成して、再生の成功を保証するためにloadの成功したコールバックの中で再生したほうがいいです.結果asの自動補完はこのようなコードに与えられました.
soundPool.setOnLoadCompleteListener(new SoundPool.OnLoadCompleteListener() {
@Override
public void onLoadComplete(SoundPool soundPool, int i, int i1) {
}
});
うん?i,i 1なんて(パラメータネーミングの重要性について......)、状態なんて関係ないに違いない.そして中でプレイし、プレイ関数の署名は以下の通りです.
play(int, float, float, int, int, float))(int soundID, float leftVolume, float rightVolume, int priority, int loop, float rate)
そこで穴の中に落ちました
soundPool.setOnLoadCompleteListener(new SoundPool.OnLoadCompleteListener() {
@Override
public void onLoadComplete(SoundPool soundPool, int i, int i1) {
soundPool.play(R.raw.bird, 0.99f, 0.99f, 0, 0, 1);
}
});
soundIDですか、そのres idもidですから、入れるのが合理的で、コンパイル-合格、実行-合格、テスト-音がしません.のいくつかのandroidバージョンのテスト機を変えたのか、それともそうなのか、犬の兄の家を探してみると、そうだったことに気づいた.
SoundPool.Builder builder = new SoundPool.Builder();
builder.setMaxStreams(1);
AudioAttributes.Builder attrBuilder = new AudioAttributes.Builder();
attrBuilder.setLegacyStreamType(AudioManager.STREAM_ALARM);
builder.setAudioAttributes(attrBuilder.build());
SoundPool soundPool = builder.build();
soundPool.setOnLoadCompleteListener(new SoundPool.OnLoadCompleteListener() {
@Override
public void onLoadComplete(SoundPool soundPool, int sampleId, int status) {
if (status == 0) {
soundPool.play(sampleId, 0.99f, 0.99f, 0, 0, 1);
}
}
});
soundPool.load(context, R.raw.bird, 0);
あの2つのasは自業自得で私に補完してくれたパラメータの原名はsampleIdとstatusで、ほほほ.幸いにも30分しか無駄にしなかったのですが・・・