私は現在、さまざまな間隔でユーザーにサウンドを再生するAndroidアプリケーションを開発中です。私はヒーロー(2.2を実行している)と1.6エミュレータで期待どおりに機能する作業コード(以下に含まれています)を持っています。しかし、それは私の友人Xperia x8で動作しません - 音は再生されません。彼は通知音のセットを持っていて、テキストを受信するとうまくいっています。一部のプラットフォームでAndroid MediaPlayerがサウンドを再生しない
private void prepareAudio(){
alert = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
mp = new MediaPlayer();
if(alert != null){
try {
mp.setDataSource(ctx, alert);
} catch (IllegalArgumentException e) {
Log.i("Prepare Audio", e.getMessage());
} catch (SecurityException e) {
Log.i("Prepare Audio", e.getMessage());
} catch (IllegalStateException e) {
Log.i("Prepare Audio", e.getMessage());
} catch (IOException e) {
Log.i("Prepare Audio", e.getMessage());
}
}
am = (AudioManager)ctx.getSystemService(Context.AUDIO_SERVICE);
}
private void notifyUser(){
if(alert != null){
if (am.getStreamVolume(AudioManager.STREAM_ALARM) != 0) {
mp.setAudioStreamType(AudioManager.STREAM_ALARM);
mp.setLooping(false);
try {
mp.prepare();
} catch (IllegalStateException e) {
Log.i("Notify User", e.getMessage());
} catch (IOException e) {
Log.i("Notify User", e.getMessage());
}
mp.start();
} else {
Log.i("Notify User", "Alarm volume zero");
}
} else {
Log.i("Notify User", "Uri is null");
}
long[] pattern = {0,200,300,600};
v.vibrate(pattern, -1);
}
PrepareAudioは、私たちがサウンドを再生するたびにクラスを初期化し、notifyUserに呼ばれています。電話はいつも振動するので、notifyUserは間違いなく呼び出されています。
私の友人がインストールしたバージョンではLog.iではなくe.printStackTraceが使用されているので、logcatには何も出ていません。 Log.iのバージョンにアップデートするように電話をかけようとしていますが、その間に断続的な問題を引き起こす可能性のあるコードに間違いがありますか?
おかげで、
私はmp3(エミュレータでは1.6)でテストし、次にヒーローが持っているもの(2.2で)はどちらも動作します。私はx8がどのようなフォーマットを使用しているのか、どのバージョンのAndroidを使っているのかはわかりません(ただし、簡単なGoogleでは2.1を示唆しています)。ありがとう! – Dan