0

オーディオの録音と再生音を同時に行う方法。バックグラウンドで実装するのに適したプロセスと、Thread または AsyncTask を使用するプロセスはどれですか? 新しいスレッドでサウンドを再生し、メインスレッドで録音しようとしましたが、一部のデバイスでメインスレッドが過負荷であるというエラーが発生するという問題があります。

記録されたバッファも必要なので、ネイティブのrocordningを使用する方が良いですか?

ネイティブ録音の使用例はありますか?

4

1 に答える 1

0

次のカスタム クラスを使用できます。

package com.app.controller;

android.content.Context をインポートします。android.media.MediaPlayer をインポートします。android.media.MediaPlayer.OnPreparedListener をインポートします。android.net.Uri をインポートします。android.provider.SyncStateContract.Constants をインポートします。android.widget.Toast をインポートします。

public class MediaController は OnPreparedListener を実装します{

public MediaController() {
    // TODO Auto-generated constructor stub
}

public MediaPlayer mp;

public void getMediaPlayObject() {

    try {
        System.out.println("00000000000000");
        mp = new MediaPlayer();

        System.out.println("2222222222");
    } catch (Exception e) {
        // TODO: handle exception
        System.out.println("exception in audia player====" + e.toString());
    }
}

public void onPrepared(MediaPlayer player) {
    mp.start();
}

boolean WORKING = true;

public void mediaPlayStart(final Context m_Context) {
    try {
        mp = new MediaPlayer();

        mp.setDataSource(m_Context, Uri.parse(Contants.audioURL_OR_PATH));
        mp.prepare();
        mp.setAudioStreamType(AudioManager.STREAM_MUSIC);
        mp.setLooping(true);



    } catch (Exception e) {
        // TODO: handle exception
        Toast.makeText(m_Context, "Service unavailable this time. Please try again!", Toast.LENGTH_LONG).show();
        System.out.println("#####THE EXCEPTION IN THE MEDIA PLAYER PLAY==="+e.getMessage());
    }
}

public void mediaPlayStop() {
    try {
        if (mp.isPlaying()) {
            mp.stop();
        }
    } catch (Exception e) {
        // TODO: handle exception
    }
}

private static String getSoundPath(int countPositiong) {
    // TODO Auto-generated method stub

    String aa = "";

    try {
        if (countPositiong < 10) {
            aa = "sounds/00" + countPositiong + ".mp4";
        } else if (countPositiong < 100) {
            aa = "sounds/0" + countPositiong + ".mp4";
        } else {
            aa = "sounds/" + countPositiong + ".mp4";
        }
    } catch (Exception e) {
        // TODO: handle exception
    }
    System.out.println("name is : " + aa);
    return aa;

}

}

于 2013-07-23T07:49:47.480 に答える