`

简单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;
    }
}

分享到:
评论

相关推荐

    totalrecorder 7.1

    Total Recorder Editor Total Recorder是一个强大的,也是一个简单的音频记录解决方案。Total Recorder可以直接从系统录制音频流,如:Real Player, Windows Media Player, QuickTime 和 WinAmp。它也可以录制来自于...

    V_Recorder_Editor_Pro_v3.6.0.apk

    V Recorder是一款稳定且流畅的屏幕录像机/游戏录像机/适用于Android的录像机,也是功能强大的多合一视频编辑器。VideoShow Recorder由VideoShow应用程序的同一团队创建,拥有超过4亿用户。它是最易于使用的免费屏幕...

    HiQMP3Recorder.apk

    Hi-Q MP3 Recorder 是一款小巧、简单易用的实时高品质mp3格式录音工具,mp3录音机破解版可用作高品质mp3录音笔,不过不支持通话录音。软件已经嵌入汉化语言,在设置里面设置中文即可,最好用的手机MP3录音工具,支持...

    Cok Free MP3 Recorder v2.0

    Cok Free MP3 Recorder是目前网上唯一一款能够实现win7及win8内录的软件,该录音软件虽然是英文版,但使用很简单,只要稍懂英语即可使用本软件。软件具有如下功能:1,录制麦克风输入的声音。2,录制电脑系统内部...

    AudioRecorder

    - 界面简洁,简单易用,启动快占用内存少 - 没有录音长度限制,保存的录音文件在SD卡AudioRecorder文件夹下 - 点击列表文件可以播放 - 程序运行时会显示小图标在状态栏提醒运行状态 - 输出格式可以选择3gp/amr/...

    ZD Soft Screen Recorder v4.13

    ZD Soft Screen Recorder是一款游戏截图器+录像机+基准测试工具,支持几乎所有的 PC 游戏,录制速度非常快、占用资源小,对游戏本身无甚速度影响,支持压缩为多种主流的视频格式以便于传输,也可用于为游戏截图...

    total recorder pro 8.1

    无毒无害,声卡内录。这个版本没有间歇的干扰兹兹声,且注册简单可用。

    录屏Apowersoft.Streaming.Video.Recorder.4.3.9.rar

    Apowersoft Screen Recording Suite 官方中文注册版是一款非常不错的屏幕视频录制工具,程序可以帮助你将屏幕上指定范围的所有动作和声音录制成WMV格式的视频文件并保存下来,非常简单易用!程序可设定自定义CPU核心...

    简单录音VoiceRecorder

    Moo0 VoiceRecorder是一款简洁的声音录制软件,开启“只允许人声”和“人声和电脑声音”、“只允许电脑声音”就可一键录制 。目前只支持WAV和Mp3格式

    mp3recorder

    一款小巧好用的网路mp3录音机,设置简便,操作简单。

    AZ Screen Recorder Video Recorder Livestream_v5.5.8.apk

    安卓版本的免费录屏工具,v5.5.8官网版本。操作简单,录屏清晰,声音也清楚。具体的操作操作细节可以百度。本人用了挺长时间了。

    Moo0系列软件之《简易录音机软件Moo0VoiceRecorder_1.31》(免费版)

    《简易录音机软件Moo0VoiceRecorder_1.31》(免费版)

    Ubuntu 16.04安装Audio Recorder-录音软件.docx

    安装 Audio Recorder 的步骤非常简单。首先,需要添加 PPA(Personal Package Archive),这可以通过以下命令实现: $ sudo add-apt-repository ppa:audio-recorder/ppa 添加 PPA 后,需要更新软件包列表,以确保...

    TotalRecorder 一款最好的录音软件

    5.软件的使用是很简单的,以录取Winamp的声音为例,先单击那个圆形的红色录音按钮,然后用Winamp播放多媒体文件,这时就会看到Total Recorder已经开始工作了,有人可能会问,刚才是先按下了录音按钮,然后才打开...

    VoiceRecorder 1.43.zip

    一款好用的电脑端录音应用程序软件,操作简单,容易上手

    AD Stream Recorder(实用录音工具) V2.51

    AD Stream Recorder(录音工具) V2.51实用录音工具软件,绿色版无需安装,可自动监控录音状态,界面简单易用,特分享给大家使用。

    VovSoft Vov Screen Recorder(录屏软件)v3.0 免费版

    1、Vov Screen Recorder是一款免费的录屏软件,软件界面只有两个按钮,上面那个是录制,下面那个是停止录制,操作也是非常简单,用它记录您的屏幕,虽然只有英文界面,但是使用起来也不会太困难! 2、不同的方式来...

    mp3Recorder

    可以下载网上不能下载的所有格式的音频; 原理很简单;就是把音频采取录取的形式下载到本地;

    安卓手机屏幕录像软件 Screen Recorder 11 中文多语免费版.zip

    使用 Screen Recorder 5+ 可以快速创建宣传视频,制作教程或简单地录制剪辑以用作音频帮助! Screen Recorder 5+ 中文版Screen Recorder 5+ 中文版 与 Android 5.0 Lollipop 及以上版本配合使用 对于 Android 4.4 ...

    ZD Soft Screen Recorder v5.2官方最新注册版.rar

    ZD Soft Screen Recorder可以录制桌面及网页中的视频,还可以录制高质量的游戏视频。可以录制指定的窗口及区域,也顺以录制全屏幕,可以同时录制声音,其功能与常用Fraps的相似,但有些方面比它更为强大。软件...

Global site tag (gtag.js) - Google Analytics