アラーム音を鳴らすためにサービスを使用するAndroidアラームアプリケーションを書いています。現在、オーディオを再生することはできますが、デバイスの音量を下げることでミュートできる形式で再生されます。setAudioStreamType(AudioManager.STREAM_ALARM);
したがって、これを防ぐためにに呼び出しを追加しようとしています。
onStartCommand()
サービスの機能として、次のものがあります。
MediaPlayer mMP;
@Override
public int onStartCommand(Intent intent, int flags, int startId)
{
try
{
mMP = MediaPlayer.create(this, R.raw.alarm);
mMP.setAudioStreamType(AudioManager.STREAM_ALARM);
mMP.setLooping(true);
//mMP.prepare(); commented out since prepare() is called in create
}
catch (Exception e)
{
e.printStackTrace();
}
if (mMP != null) mMP.start();
return START_STICKY;
}
私の問題は、setAudioStreamType()を呼び出すと、MediaPlayerがオーディオを再生しないことです。その行をコメントすると、オーディオが再生されます。
行を入力すると、次のランタイムエラーが発生します。
04-10 19:32:03.115:E / MediaPlayer(3411):状態8で呼び出されたsetAudioStream
04-10 19:32:03.115:E / MediaPlayer(3411):エラー(-38、0)
04-10 19:32:03.115:E / MediaPlayer(3411):状態0で呼び出しを開始
04-10 19:32:03.115:E / MediaPlayer(3411):エラー(-38、0)
04-10 19:32:03.115:E / MediaPlayer(3411):エラー(-38,0)
04-10 19:32:03.115:E / MediaPlayer(3411):エラー(-38,0)
いくつかの調査(私は今リンクを見つけることができません)は、setAudioStreamType()
呼び出された後に呼び出すことができずprepare()
、create()
暗黙的にを呼び出すと私に言いましたprepare()
。
とにかく、私はsetAudioStreamType()
そのようなエラーなしでどのようにすべきですか?