3

Android Studio 向けの開発を試みることにし、拍手を聞いて何らかのアクションを実行するアプリを設計しました。私の問題は TarsosDSP の使用にあります。

Listenerクラスを として実行したいIntentServiceので、電話をロックしてもリッスンできます。ただし、 と の設定に問題がAudioDispatcherありTarsosDSPAudioInputStreamます。

onHandleIntentこれまでのところは次のとおりです。

protected void onHandleIntent(Intent Intent) {
        AudioDispatcher mDispatcher = new AudioDispatcher(TarsosDSPAudioInputStream, SAMPLE_RATE, BUFFER_OVERLAP);
        double threshold = 8;
        double sensitivity = 20;

        PercussionOnsetDetector mPercussionDetector = new PercussionOnsetDetector(22050, 1024,
                new OnsetHandler() {

                    @Override
                    public void handleOnset(double time, double salience) {
                        Log.d(TAG, "Clap detected!");
                    }
                }, sensitivity, threshold);

        mDispatcher.addAudioProcessor(mPercussionDetector);
        new Thread(mDispatcher).start();
    }

TarsosDSPAudioInputStreamより具体的には、オブジェクトをどのように定義すればよいかわかりません。ドキュメントにはインターフェースだと書かれていますが、それがどのように機能するのかわかりません。私は Android Studio と Java の初心者ですが、専攻の一部である C++ の経験は 1 年あります。

4

1 に答える 1

3

TarsosDSP には、Android 用の実装が既にあります。AudioDispatcherFactoryクラスとfromDefaultMicrophone (...) メソッドがあります。

したがって、このメソッドを使用してオーディオ ディスパッチャ インスタンスを初期化し、使用可能なプロセッサをそれに追加できます。あなたの場合、PercussionOnsetDetector

    AudioDispatcher dispatcher = AudioDispatcherFactory.fromDefaultMicrophone(22050,1024,0);

    double threshold = 8;
    double sensitivity = 20;

    PercussionOnsetDetector mPercussionDetector = new PercussionOnsetDetector(22050, 1024,
            new OnsetHandler() {

                @Override
                public void handleOnset(double time, double salience) {
                    Log.d(TAG, "Clap detected!");
                }
            }, sensitivity, threshold);

    mDispatcher.addAudioProcessor(mPercussionDetector);
    new Thread(mDispatcher,"Audio Dispatcher").start();
于 2016-05-01T21:46:07.570 に答える