onPostExecute メソッドが次の AsyncTask を持っています。
protected void onPostExecute(String args) {
final AudioManager audioManager = (AudioManager)getSystemService(Context.AUDIO_SERVICE);
int maxVolume = audioManager.getStreamMaxVolume(AudioManager.STREAM_MUSIC);
int curVolume = audioManager.getStreamVolume(AudioManager.STREAM_MUSIC);
LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View layout = inflater.inflate(R.layout.custom_dialog, (ViewGroup) findViewById(R.id.dialog_root_element));
AlertDialog.Builder builder = new AlertDialog.Builder(Main.this);
builder.setView(layout)
.setMessage(name)
.setTitle("playing...")
.setCancelable(false)
.setNeutralButton("stop/volver",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog,
int id) {
mediaPlayer.stop();
dialog.cancel();
}
});
alert = builder.create();
alert.show();
SeekBar volControl = (SeekBar)findViewById(R.id.dialog_seekbar);
volControl.setMax(maxVolume);
volControl.setProgress(curVolume);
volControl.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
@Override
public void onStopTrackingTouch(SeekBar arg0) {
}
@Override
public void onStartTrackingTouch(SeekBar arg0) {
}
@Override
public void onProgressChanged(SeekBar arg0, int arg1, boolean arg2) {
audioManager.setStreamVolume(AudioManager.STREAM_MUSIC, arg1, 0);
}
});
mediaPlayer.setOnCompletionListener(new OnCompletionListener() {
public void onCompletion(MediaPlayer mp) {
mediaPlayer.stop();
alert.dismiss();
}
});
// updating UI from Background Thread
runOnUiThread(new Runnable() {
public void run() {
}
});
}
エラーは次のとおりです。
volControl.setMax(maxVolume);
しかし、理由がわかりません... (デバッグモードでは、maxVolume は 15 です)
ボリューム コントロールの seekBar を使用してダイアログを実行しようとしていますが、エラーが表示されません。AsyncTask でサウンドの音量を変更できますか?
どうもありがとう!