Что я пытаюсь сделать?
Я пытаюсь создать приложение, которое фиксирует отскок мяча от футбольного мяча (футбольного мяча). Я впервые пишу приложение и впервые использую Java.
Одним из моих шагов является запись звука и отображение амплитуды уровня звука.
Но сейчас он все еще показывает 0.0 на моем экране.
Код для отображения уровня звука
package com.example.user.sportsballbounceapp;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.TextView;
import java.io.IOException;
public class Football1Test extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_football1_test);
SoundMeter Sound=new SoundMeter();
double myValue = Sound.getAmplitude();
String message =
myValue == -1 ?
"The value is invalid." :
"The value is " + myValue;
TextView tv = (TextView) findViewById(R.id.textView2);
tv.setText(message);
}
}
Код для измерения уровня звука
package com.example.user.sportsballbounceapp;
import android.media.MediaRecorder;
import java.io.IOException;
public class SoundMeter {
private MediaRecorder mRecorder = null;
public void start() throws IOException {
if (mRecorder == null) {
mRecorder = new MediaRecorder();
mRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
mRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
mRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
mRecorder.setOutputFile("/dev/null");
mRecorder.prepare();
mRecorder.start();
}
}
public void stop() {
if (mRecorder != null) {
mRecorder.stop();
mRecorder.release();
mRecorder = null;
}
}
public double getAmplitude() {
if (mRecorder != null)
return mRecorder.getMaxAmplitude();
else
return 0;
}
}
Результат
Результат при тестировании на моем телефоне такой же, как и в симуляторе (изображение с симулятора)
изображение
Обновление
Я также добавил разрешения в манифесте Android
<uses-permission android:name="android.permission.RECORD_AUDIO" />