//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;
}
}
相关推荐
3. **便捷操作**:界面友好,操作简单,用户可以轻松上手。 4. **支持多种输入源**:无论是来自麦克风的声音、播放器的音乐还是系统内部的声音,都能被准确捕捉并录制下来。 5. **定时录音**:可以根据预设的时间...
5. **编辑功能**:除了录音,Power Mp3 Recorder还提供简单的音频编辑工具,如剪切、合并、添加淡入淡出效果等,用户可以在录制后对音频进行必要的处理。 6. **操作界面**:软件界面设计简洁直观,新手也能快速上手...
1. **易用性**:UnityRecorder集成在Unity编辑器内部,用户界面直观,使得设置和控制录制过程变得简单。只需几步操作,用户就能开始录制场景内容,包括游戏视图、场景视图或任何自定义的渲染目标。 2. **兼容性**:...
在实际使用中,"Recorder"可能会提供直观的用户界面,使得操作简单易懂。它可能允许用户自定义录音设置,如录音格式(如MP3、WAV)、质量设置、采样率等。同时,为了方便用户,软件可能还集成了剪辑、合并、添加注释...
无论是简单的个人使用还是复杂的项目需求,这款录音机都能提供高质量的声音录制体验。"注册配置.bat"和"清理.bat"这两个批处理文件可能是用于软件激活和系统清理的辅助工具,确保用户可以顺利安装和卸载该软件。在...
总的来说,Unity的Recorder插件为开发者提供了一种强大且便捷的工具,让动态内容的创作变得简单而高效。通过熟练掌握Recorder的使用,开发者可以提升工作效率,创造出更具视觉冲击力和表现力的项目。所以,无论是...
6. **简单易用的界面**:考虑到"Free Recorder"强调无需安装,其用户界面应该设计得直观简洁,使得新手也能快速上手。 7. **文件保存格式**:为了方便分享和存储,该软件可能支持多种视频格式输出,如MP4、AVI、WMV...
安装 Audio Recorder 的步骤非常简单。首先,需要添加 PPA(Personal Package Archive),这可以通过以下命令实现: $ sudo add-apt-repository ppa:audio-recorder/ppa 添加 PPA 后,需要更新软件包列表,以确保...
本资源提供的就是一个经过优化的Recorder.js版本,专为单声道16k采样率录音设计,非常适合那些需要简单、快速实现网页录音功能的项目。 首先,我们要理解Recorder.js的工作原理。这个库基于Web Audio API,这是一个...
VoiceRecorder 1.43是一款专为电脑用户设计的高效录音软件,它的主要功能是提供一个简洁、易用的界面,使得录音操作变得极其简单。该软件版本1.43在原有基础上可能进行了优化和升级,以提升用户体验和录音质量。 在...
一键启动录制,简单设置参数,即可开始工作。对于初次使用者,内置的中文说明文档(BBFlash Back CHS Patch.exe)提供了详细的引导,帮助用户快速熟悉软件。 最后,值得注意的是bbflbk5.exe是FlashBack Pro 5的主要...
此外,WebEx Recorder 3.17的用户界面设计简洁直观,操作流程简单易懂,无论是初次使用者还是经验丰富的专业人士都能迅速上手。只需点击几下,就可以开始或停止录制,极大地提高了工作效率。而且,软件还支持自定义...
Total Recorder Pro 8.1的注册过程简单快捷。解压压缩包后,用户会找到tr81pe.exe可执行文件,双击运行进行安装。安装完成后,打开reg.txt文件,复制其中的注册码,然后在软件的激活界面粘贴并按照提示完成注册。...
V Recorder是一款稳定流畅的屏幕录像机/游戏录像机/录像机,适用于Android,也是一款功能强大的一体化视频编辑器。VideoShow Recorder由VideoShow应用程序团队创建,拥有超过4亿用户。它是世界上500万用户选择的最...
对于视频后期编辑,软件可能还提供了简单的剪辑功能,如裁剪、合并等,使用户在录制后能够快速调整视频内容。 为了确保录制过程的顺畅,Screen Recorder 11 很可能有热键设定功能,用户可以自定义开始、停止和暂停...
这款软件不仅能够满足基本的录音需求,还具备一系列高级特性,使得音频处理变得简单而高效。下面,我们将深入探讨Total Recorder 7.1的核心功能以及其配套的插件,揭示这款软件在音频编辑领域的卓越表现。 首先,...
1. 易于使用:其直观的用户界面使得测试脚本的创建和修改变得简单。 2. 功能丰富:支持断言、数据驱动测试、条件判断等高级测试逻辑。 3. 集成性强:可以导出测试脚本到JUnit或TestNG格式,方便与持续集成工具如...
这款汉化免安装的特别版更是为中文用户提供了极大的便利,使得录音及音频处理工作变得更加简单。下面我们将深入探讨TotalRecorder的核心特点和使用技巧。 首先,TotalRecorder的最大亮点在于其全面的录音能力。无论...
这款软件虽然只有两兆多大小,但它的功能却并不简单。它能够帮助用户轻松地记录电脑屏幕上的所有活动,包括操作过程、视频播放、音频讲解等,非常适合用于教学、培训、演示等领域。 WebEx Recorder 2.4 的汉化版更...
用户可以通过简单的API调用来启动、停止录音,并获取到录制的音频数据。 记录活力状态事件是指捕获用户在应用中的交互过程,例如点击、滑动、键盘输入等。这些状态可以被编码并存储,以便在需要时回放。这种功能...