简单recorder

//activity

package com.example.recorder_audio;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Calendar;
import java.util.Locale;

import com.example.recorder_audio.PlayRecorderService.PlayBinder;
import com.example.recorder_audio.RecorderAudioService.RecorderBinder;

import android.media.MediaPlayer;
import android.media.MediaRecorder;
import android.os.Bundle;
import android.os.IBinder;
import android.app.Activity;
import android.content.ComponentName;
import android.content.Intent;
import android.content.ServiceConnection;
import android.text.format.DateFormat;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.Toast;

public class MainActivity extends Activity implements OnClickListener
{

    private Button recordAudio;
    private Button stop;
    private Button play;
    private File file;
    private RecorderBinder recorderBinder;
    private ServiceConnection conn=new ServiceConnection()
    {
       

        @Override
        public void onServiceDisconnected(ComponentName name)
        {
        }
       
        @Override
        public void onServiceConnected(ComponentName name, IBinder service)
        {
           recorderBinder =(RecorderBinder)service;
        }
    };
    private PlayBinder playBinder;
    private ServiceConnection conn2=new ServiceConnection()
    {
       

        @Override
        public void onServiceDisconnected(ComponentName name)
        {
        }
       
        @Override
        public void onServiceConnected(ComponentName name, IBinder service)
        {
            playBinder=(PlayBinder)service;           
        }
    };

    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        iniService();
       recordAudio =(Button) findViewById(R.id.button1);
       stop =(Button) findViewById(R.id.button2);
       play =(Button) findViewById(R.id.button3);
       recordAudio.setOnClickListener(this);
       stop.setOnClickListener(this);
       play.setOnClickListener(this);
    }

    private void iniService()
    {
      Intent intent=new Intent(this, RecorderAudioService.class);
      bindService(intent, conn, BIND_AUTO_CREATE); 
      Intent intent2=new Intent(this, PlayRecorderService.class);
      bindService(intent2, conn2, BIND_AUTO_CREATE); 
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu)
    {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.activity_main, menu);
        return true;
    }

    @Override
    public void onClick(View v)
    {
       switch (v.getId())
    {
    case R.id.button1:
        recordAudio();
        break;
    case R.id.button2:
        stop();
        break;
    case R.id.button3:
        play();
        break;

    default:
        break;
    }       
    }

    private void play()
    {
       playBinder.play(file.getAbsolutePath());
    }

    private void recordAudio()
    {
        file = new File("/sdcard/"  + "wuxifu.amr");
        try
        {
            file.createNewFile();//自己要先建好一个文件
        }
        catch (IOException e)
        {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

                Toast.makeText(getApplicationContext(), "正在录音,录音文件在"+file.getAbsolutePath(), Toast.LENGTH_LONG) .show();
                recorderBinder.record(file.getAbsolutePath());
                recordAudio.setText("录音中……"); 

               

    }

    private void stop()
    {
        recorderBinder.stop();
        recordAudio.setText("录音完毕!!!");
    }
    @Override
    protected void onDestroy()
    {
        super.onDestroy();
        //解绑服务
        unbindService(conn);
        unbindService(conn2);
    }

}
//录音的service

package com.example.recorder_audio;

import java.io.IOException;

import android.app.Service;
import android.content.Intent;
import android.media.MediaRecorder;
import android.os.Binder;
import android.os.IBinder;

public class RecorderAudioService extends Service
{
    private MediaRecorder mediaRecorder;
    private RecorderBinder recorderBinder;
    public RecorderAudioService()
    {
    }
    class RecorderBinder extends  Binder
    {

        public void record(String path)
        {
            // 从麦克风源进行录音
            mediaRecorder.setAudioSource(MediaRecorder.AudioSource.DEFAULT);
         // 设置输出格式
            mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.DEFAULT);
            // 设置编码格式 Call this after setOutputFormat() but before prepare().
            mediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.DEFAULT);
            // 设置输出文件
            mediaRecorder.setOutputFile(path);
            // 准备录制
            try
            {
                mediaRecorder.prepare();
                // 开始录制
                mediaRecorder.start();
            }
            catch (IllegalStateException e)
            {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            catch (IOException e)
            {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
          
           
        }

        public void stop()
        {
         mediaRecorder.stop();           
        }
           
    }
    @Override
    public void onCreate()
    {
        super.onCreate();
        mediaRecorder = new MediaRecorder();
        recorderBinder = new RecorderBinder();
    }
    @Override
    public IBinder onBind(Intent intent)
    {
        return recorderBinder;
    }
}
//播放 的service

package com.example.recorder_audio;

import java.io.IOException;

import android.app.Service;
import android.content.Intent;
import android.media.MediaPlayer;
import android.media.MediaPlayer.OnCompletionListener;
import android.os.Binder;
import android.os.IBinder;
import android.widget.Toast;

public class PlayRecorderService extends Service
{
    private MediaPlayer mediaPlayer;
    private PlayBinder playBinder;
    public PlayRecorderService()
    {
    }
    class PlayBinder  extends  Binder
    {

        public void play(String absolutePath)
        {
            try
            {
                mediaPlayer.reset(); //这句很重要,重置对象,回到初始化创建 的状态
                mediaPlayer.setDataSource(absolutePath);
                mediaPlayer.prepare();
                mediaPlayer.start();
                mediaPlayer.setOnCompletionListener(new OnCompletionListener()
                {
                   
                    @Override
                    public void onCompletion(MediaPlayer mp)
                    {
                       Toast.makeText(PlayRecorderService.this, "播放完毕", Toast.LENGTH_LONG).show();
                    }
                });
            }
            catch (IllegalArgumentException e)
            {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            catch (SecurityException e)
            {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            catch (IllegalStateException e)
            {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            catch (IOException e)
            {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
         
                     
        }
       
    }
    @Override
    public void onCreate()
    {
        super.onCreate();
        mediaPlayer = new MediaPlayer();
        playBinder = new PlayBinder();
    }
    @Override
    public IBinder onBind(Intent intent)
    {
        return   playBinder;
    }
}

猜你喜欢

转载自wuxifu001.iteye.com/blog/1783793