Android でこの機能を実装する際に問題が発生しました...マイクから再命令されたデシベルを出力するだけでよいのですが、それは理解できないものです:
public class Noise extends Activity{
@Override
protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
MediaRecorder recorder=new MediaRecorder();
recorder.setAudioSource(MediaRecorder.AudioSource.MIC);
Timer timer=new Timer();
timer.scheduleAtFixedRate(new RecorderTask(recorder), 0, 500);
}
private class RecorderTask extends TimerTask{
TextView risultato=(TextView) findViewById(R.id.risultato_recorder);
private MediaRecorder recorder;
public RecorderTask(MediaRecorder recorder){
this.recorder = recorder;
}
public void run(){
risultato.setText(""+recorder.getMaxAmplitude());
}
}
}
textview では、結果が最初にのみ出力され、それが 0 になり、アプリがクラッシュします: 11-29 14:43:27.133: E/AndroidRuntime(25785): android.view.ViewRoot$CalledFromWrongThreadException:ビュー階層を作成した元のスレッドは、そのビューに触れることができます。
私は周りを検索しましたが、包括的な例を見つけることができません...必要のない多くのものとクラスの例のみです。この問題を解決できますか?