如何通过录音机感应声音的振幅?

时间:2014-05-22 11:03:51

标签: java android eclipse audio

我创建了示例项目并想检查是否可以读取声音幅度。到目前为止,我已经从主要活动开始提供服务,在服务类中,我已经放了一些代码来读取声音幅度。根据教程它应该有用,但不知道为什么不工作。这是代码

 public class MyService extends Service {

        int sampleRate = 8000;
        AudioRecord audioRecord;
        int bufferSize;
        double lastLevel;

        @Override
        public void onCreate() {
            super.onCreate();
            Log.d("TAG", "oncreate called of service");

        }

        @Override
        public void onDestroy() {

            super.onDestroy();
            Log.d("TAG", "oncDestroy called of service");

        }



        @Override
        public int onStartCommand(Intent intent, int flags, int startId) {

            Log.d("TAG", "onstart command  called of service");
            try {
                bufferSize = AudioRecord
                        .getMinBufferSize(sampleRate, AudioFormat.CHANNEL_IN_MONO,
                                AudioFormat.ENCODING_PCM_16BIT);
                audioRecord = new AudioRecord(MediaRecorder.AudioSource.MIC,
                        sampleRate, AudioFormat.CHANNEL_IN_MONO,
                        AudioFormat.ENCODING_PCM_16BIT, bufferSize);
            } catch (Exception e) {
                android.util.Log.e("TrackingFlow", "Exception", e);
            }


            audioRecord.startRecording();

            if (lastLevel > 0 && lastLevel <= 50) {
                Log.d("TAG", "lastlevel is less then 50");
            } else if (lastLevel > 50 && lastLevel <= 100) {
                Log.d("TAG", "lastlevel is less then/equal 100");
            } else if (lastLevel > 100 && lastLevel <= 170) {
                Log.d("TAG", "lastlevel is less then/= 170");
            }
            if (lastLevel > 170) {
                Log.d("TAG", "lastlevel is greater then 170");
            }

            return super.onStartCommand(intent, flags, startId);

        }

        @Override
        public IBinder onBind(Intent arg0) {

            return null;

        }

    }

Here是教程链接。我也不熟悉服务,我希望我的服务类完全按照应有的方式。我能够第一次听到声音,但是在言语之后,声音的其余部分是无意义的。我的服务类不正确吗?或者我无法弄清楚audioRecorder的一些错误。我第一次工作时也已经弄清了它,但之后就没用了。

0 个答案:

没有答案
相关问题