일정 값 초과시 사운드 재생
조회수 583회
dB (데시벨) 값을 측저하여 일정 값이 넘은면 사운드를 출력 하고싶은데
raw폴더에 mp3를 넣고 soundpool을 작동시키면 된다고 하는데 어떤식으로 작성하여야할지 모르겠어서 질문드리겠습니다.
package com.example.velmurugan.detectnoiseandroidexample;
import android.Manifest; import android.content.Context; import android.content.pm.PackageManager; import android.os.Handler; import android.os.PowerManager; import android.support.v4.app.ActivityCompat; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.util.Log; import android.widget.ProgressBar; import android.widget.TextView; import android.widget.Toast;
public class MainActivity extends AppCompatActivity { /* constants */ private static final int POLL_INTERVAL = 300;
/** running state **/
private boolean mRunning = false;
/** config state **/
private int mThreshold;
int RECORD_AUDIO = 0;
private PowerManager.WakeLock mWakeLock;
private Handler mHandler = new Handler();
/* References to view elements */
private TextView mStatusView,tv_noice;
/* sound data source */
private DetectNoise mSensor;
ProgressBar bar;
/****************** Define runnable thread again and again detect noise *********/
private Runnable mSleepTask = new Runnable() {
public void run() {
//Log.i("Noise", "runnable mSleepTask");
start();
}
};
// Create runnable thread to Monitor Voice
private Runnable mPollTask = new Runnable() {
public void run() {
double amp = mSensor.getAmplitude();
//Log.i("Noise", "runnable mPollTask");
updateDisplay("Monitoring Voice...", amp);
if ((amp > mThreshold)) {
callForHelp(amp);
//Log.i("Noise", "==== onCreate ===");
}
// Runnable(mPollTask) will again execute after POLL_INTERVAL
mHandler.postDelayed(mPollTask, POLL_INTERVAL);
}
};
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Defined SoundLevelView in main.xml file
setContentView(R.layout.activity_main);
mStatusView = (TextView) findViewById(R.id.status);
tv_noice=(TextView)findViewById(R.id.tv_noice);
bar=(ProgressBar)findViewById(R.id.progressBar1);
// Used to record voice
mSensor = new DetectNoise();
PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
mWakeLock = pm.newWakeLock(PowerManager.SCREEN_DIM_WAKE_LOCK, "NoiseAlert");
}
@Override
public void onResume() {
super.onResume();
//Log.i("Noise", "==== onResume ===");
initializeApplicationConstants();
if (!mRunning) {
mRunning = true;
start();
}
}
@Override
public void onStop() {
super.onStop();
// Log.i("Noise", "==== onStop ===");
//Stop noise monitoring
stop();
}
private void start() {
if (ActivityCompat.checkSelfPermission(this, Manifest.permission.RECORD_AUDIO) != PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.RECORD_AUDIO},
RECORD_AUDIO);
}
//Log.i("Noise", "==== start ===");
mSensor.start();
if (!mWakeLock.isHeld()) {
mWakeLock.acquire();
}
//Noise monitoring start
// Runnable(mPollTask) will execute after POLL_INTERVAL
mHandler.postDelayed(mPollTask, POLL_INTERVAL);
}
private void stop() {
Log.d("Noise", "==== Stop Noise Monitoring===");
if (mWakeLock.isHeld()) {
mWakeLock.release();
}
mHandler.removeCallbacks(mSleepTask);
mHandler.removeCallbacks(mPollTask);
mSensor.stop();
bar.setProgress(0);
updateDisplay("stopped...", 0.0);
mRunning = false;
}
private void initializeApplicationConstants() {
// Set Noise Threshold
mThreshold = 8;
}
private void updateDisplay(String status, double signalEMA) {
mStatusView.setText(status);
//
bar.setProgress((int)signalEMA);
Log.d("SONUND", String.valueOf(signalEMA));
tv_noice.setText(signalEMA+"dB");
}
private void callForHelp(double signalEMA) {
//stop();
// Show alert when noise thersold crossed
Toast.makeText(getApplicationContext(), "Noise Thersold Crossed, do here your stuff.",
Toast.LENGTH_LONG).show();
Log.d("SONUND", String.valueOf(signalEMA));
tv_noice.setText(signalEMA+"dB");
if (signalEMA > 89)
stop();
SoundPool sound_pool; sound_pool = new SoundPool( 10, AudioManager.STREAM_MUSIC, 0 ); int SoundID = sound_pool.load( this, R.raw.beep11_1, 1 ); // R.raw.sound에서 "sound"는 사운드 파일명 sound_pool.play( SoundID, 1, 1, 0, 1, 1 );
}
};
이것이 지금 메인엑티비티입니다 여기서 어떤식으로 해야할지 도움 부탁드리겠습니다.
-
(•́ ✖ •̀)
알 수 없는 사용자
댓글 입력