音频捕捉Android不起作用

时间:2015-05-25 20:01:42

标签: android audio capture

我的应用需要实现音频捕获功能。 我已经按照几个教程和谷歌指南。所以我已经制作了以下代码。 它工作正常,直到第二次尝试。当我捕捉到我的声音时,它能够回复我所说的话。 在第二次尝试中,当我认为它必须覆盖创建的文件时,应用程序崩溃了。可能我忽略了一些方法。 你能救我吗?

    protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);

            inizializzaView();
            Media();
            SetListner();
        }
public void inizializzaView(){

        Text=(TextView)findViewById(R.id.textview);
        Registra=(Button)findViewById(R.id.bottonereg);
        Ascolta=(Button)findViewById(R.id.bottoneascolta);
        Stop=(Button)findViewById(R.id.bottonestop);

        Stop.setEnabled(false);
        Ascolta.setEnabled(true);








    }

    public void SetListner(){

        Registra.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {



                    start(v);


                }
        });

        Stop.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {



                stop(v);


            }
        });
        Ascolta.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {


                play(v);


            }
        });


    }
    public void Media(){


        outputFile = Environment.getExternalStorageDirectory().
                getAbsolutePath() + "/recording.3gp";;

// android voice recorder

        media = new MediaRecorder();
        media.setAudioSource(MediaRecorder.AudioSource.MIC);
        media.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
        media.setAudioEncoder(MediaRecorder.OutputFormat.AMR_NB);
        media.setOutputFile(outputFile);
    }


    public void start(View view){
        try {
            media.prepare();
            media.start();
        } catch (IOException e) {
// TODO Auto-generated catch block
            e.printStackTrace();
        }
        Registra.setEnabled(false);
        Stop.setEnabled(true);
        Toast.makeText(getApplicationContext(), "Stai registrando Burlone !!!", Toast.LENGTH_LONG).show();

    }
    public void stop(View view){
        media.stop();
        media.release();
        media = null;
        Stop.setEnabled(false);
        Registra.setEnabled(true);
        Toast.makeText(getApplicationContext(), "Registrazione Terminata",
                Toast.LENGTH_LONG).show();
    }

    public void play(View view) {

        try{

            myPlayer = new MediaPlayer();

            myPlayer.setDataSource(outputFile);

            myPlayer.prepare();

            myPlayer.start();
            myPlayer.release();



            Ascolta.setEnabled(true);

            Stop.setEnabled(false);





            Toast.makeText(getApplicationContext(), "Ascolta.......",

                    Toast.LENGTH_SHORT).show();

        } catch (Exception e) {

            // TODO Auto-generated catch block

            e.printStackTrace();

        }

    }

1 个答案:

答案 0 :(得分:0)

我已经解决了!!! 代码需要实现。

x