`

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

分享到:
评论

相关推荐

    Total Recorder注册码 序列号

    3. **便捷操作**:界面友好,操作简单,用户可以轻松上手。 4. **支持多种输入源**:无论是来自麦克风的声音、播放器的音乐还是系统内部的声音,都能被准确捕捉并录制下来。 5. **定时录音**:可以根据预设的时间...

    录音软件Power Mp3 Recorder

    5. **编辑功能**:除了录音,Power Mp3 Recorder还提供简单的音频编辑工具,如剪切、合并、添加淡入淡出效果等,用户可以在录制后对音频进行必要的处理。 6. **操作界面**:软件界面设计简洁直观,新手也能快速上手...

    UnityRecorder,untiy录屏,2018版本

    1. **易用性**:UnityRecorder集成在Unity编辑器内部,用户界面直观,使得设置和控制录制过程变得简单。只需几步操作,用户就能开始录制场景内容,包括游戏视图、场景视图或任何自定义的渲染目标。 2. **兼容性**:...

    Recorder

    在实际使用中,"Recorder"可能会提供直观的用户界面,使得操作简单易懂。它可能允许用户自定义录音设置,如录音格式(如MP3、WAV)、质量设置、采样率等。同时,为了方便用户,软件可能还集成了剪辑、合并、添加注释...

    Total_Recorder录音机

    无论是简单的个人使用还是复杂的项目需求,这款录音机都能提供高质量的声音录制体验。"注册配置.bat"和"清理.bat"这两个批处理文件可能是用于软件激活和系统清理的辅助工具,确保用户可以顺利安装和卸载该软件。在...

    Recorder_unity_appstore.rar

    总的来说,Unity的Recorder插件为开发者提供了一种强大且便捷的工具,让动态内容的创作变得简单而高效。通过熟练掌握Recorder的使用,开发者可以提升工作效率,创造出更具视觉冲击力和表现力的项目。所以,无论是...

    Free Recorder 录屏软件

    6. **简单易用的界面**:考虑到"Free Recorder"强调无需安装,其用户界面应该设计得直观简洁,使得新手也能快速上手。 7. **文件保存格式**:为了方便分享和存储,该软件可能支持多种视频格式输出,如MP4、AVI、WMV...

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

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

    网页端录音Recorder.js,单声道16k采样率录音工具

    本资源提供的就是一个经过优化的Recorder.js版本,专为单声道16k采样率录音设计,非常适合那些需要简单、快速实现网页录音功能的项目。 首先,我们要理解Recorder.js的工作原理。这个库基于Web Audio API,这是一个...

    VoiceRecorder 1.43.zip

    VoiceRecorder 1.43是一款专为电脑用户设计的高效录音软件,它的主要功能是提供一个简洁、易用的界面,使得录音操作变得极其简单。该软件版本1.43在原有基础上可能进行了优化和升级,以提升用户体验和录音质量。 在...

    FlashBack Pro 5 Recorder

    一键启动录制,简单设置参数,即可开始工作。对于初次使用者,内置的中文说明文档(BBFlash Back CHS Patch.exe)提供了详细的引导,帮助用户快速熟悉软件。 最后,值得注意的是bbflbk5.exe是FlashBack Pro 5的主要...

    WebEx_Recorder_3.17

    此外,WebEx Recorder 3.17的用户界面设计简洁直观,操作流程简单易懂,无论是初次使用者还是经验丰富的专业人士都能迅速上手。只需点击几下,就可以开始或停止录制,极大地提高了工作效率。而且,软件还支持自定义...

    total recorder pro 8.1

    Total Recorder Pro 8.1的注册过程简单快捷。解压压缩包后,用户会找到tr81pe.exe可执行文件,双击运行进行安装。安装完成后,打开reg.txt文件,复制其中的注册码,然后在软件的激活界面粘贴并按照提示完成注册。...

    V Recorder Editor 2.7.2.apk

    V Recorder是一款稳定流畅的屏幕录像机/游戏录像机/录像机,适用于Android,也是一款功能强大的一体化视频编辑器。VideoShow Recorder由VideoShow应用程序团队创建,拥有超过4亿用户。它是世界上500万用户选择的最...

    【屏幕录制软件】Screen Recorder 11

    对于视频后期编辑,软件可能还提供了简单的剪辑功能,如裁剪、合并等,使用户在录制后能够快速调整视频内容。 为了确保录制过程的顺畅,Screen Recorder 11 很可能有热键设定功能,用户可以自定义开始、停止和暂停...

    HA_TotalRecorder_7.1及其插件

    这款软件不仅能够满足基本的录音需求,还具备一系列高级特性,使得音频处理变得简单而高效。下面,我们将深入探讨Total Recorder 7.1的核心功能以及其配套的插件,揭示这款软件在音频编辑领域的卓越表现。 首先,...

    Katalon Recorder浏览器插件(含google及firefox插件).rar

    1. 易于使用:其直观的用户界面使得测试脚本的创建和修改变得简单。 2. 功能丰富:支持断言、数据驱动测试、条件判断等高级测试逻辑。 3. 集成性强:可以导出测试脚本到JUnit或TestNG格式,方便与持续集成工具如...

    totalRecorder 汉化免安装特别版

    这款汉化免安装的特别版更是为中文用户提供了极大的便利,使得录音及音频处理工作变得更加简单。下面我们将深入探讨TotalRecorder的核心特点和使用技巧。 首先,TotalRecorder的最大亮点在于其全面的录音能力。无论...

    WebEx_Recorder2.4_绿色汉化版

    这款软件虽然只有两兆多大小,但它的功能却并不简单。它能够帮助用户轻松地记录电脑屏幕上的所有活动,包括操作过程、视频播放、音频讲解等,非常适合用于教学、培训、演示等领域。 WebEx Recorder 2.4 的汉化版更...

    前端开源库-brisky-recorder

    用户可以通过简单的API调用来启动、停止录音,并获取到录制的音频数据。 记录活力状态事件是指捕获用户在应用中的交互过程,例如点击、滑动、键盘输入等。这些状态可以被编码并存储,以便在需要时回放。这种功能...

Global site tag (gtag.js) - Google Analytics