//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 Editor Total Recorder是一个强大的,也是一个简单的音频记录解决方案。Total Recorder可以直接从系统录制音频流,如:Real Player, Windows Media Player, QuickTime 和 WinAmp。它也可以录制来自于...
V Recorder是一款稳定且流畅的屏幕录像机/游戏录像机/适用于Android的录像机,也是功能强大的多合一视频编辑器。VideoShow Recorder由VideoShow应用程序的同一团队创建,拥有超过4亿用户。它是最易于使用的免费屏幕...
Hi-Q MP3 Recorder 是一款小巧、简单易用的实时高品质mp3格式录音工具,mp3录音机破解版可用作高品质mp3录音笔,不过不支持通话录音。软件已经嵌入汉化语言,在设置里面设置中文即可,最好用的手机MP3录音工具,支持...
Cok Free MP3 Recorder是目前网上唯一一款能够实现win7及win8内录的软件,该录音软件虽然是英文版,但使用很简单,只要稍懂英语即可使用本软件。软件具有如下功能:1,录制麦克风输入的声音。2,录制电脑系统内部...
- 界面简洁,简单易用,启动快占用内存少 - 没有录音长度限制,保存的录音文件在SD卡AudioRecorder文件夹下 - 点击列表文件可以播放 - 程序运行时会显示小图标在状态栏提醒运行状态 - 输出格式可以选择3gp/amr/...
ZD Soft Screen Recorder是一款游戏截图器+录像机+基准测试工具,支持几乎所有的 PC 游戏,录制速度非常快、占用资源小,对游戏本身无甚速度影响,支持压缩为多种主流的视频格式以便于传输,也可用于为游戏截图...
无毒无害,声卡内录。这个版本没有间歇的干扰兹兹声,且注册简单可用。
Apowersoft Screen Recording Suite 官方中文注册版是一款非常不错的屏幕视频录制工具,程序可以帮助你将屏幕上指定范围的所有动作和声音录制成WMV格式的视频文件并保存下来,非常简单易用!程序可设定自定义CPU核心...
Moo0 VoiceRecorder是一款简洁的声音录制软件,开启“只允许人声”和“人声和电脑声音”、“只允许电脑声音”就可一键录制 。目前只支持WAV和Mp3格式
一款小巧好用的网路mp3录音机,设置简便,操作简单。
安卓版本的免费录屏工具,v5.5.8官网版本。操作简单,录屏清晰,声音也清楚。具体的操作操作细节可以百度。本人用了挺长时间了。
《简易录音机软件Moo0VoiceRecorder_1.31》(免费版)
安装 Audio Recorder 的步骤非常简单。首先,需要添加 PPA(Personal Package Archive),这可以通过以下命令实现: $ sudo add-apt-repository ppa:audio-recorder/ppa 添加 PPA 后,需要更新软件包列表,以确保...
5.软件的使用是很简单的,以录取Winamp的声音为例,先单击那个圆形的红色录音按钮,然后用Winamp播放多媒体文件,这时就会看到Total Recorder已经开始工作了,有人可能会问,刚才是先按下了录音按钮,然后才打开...
一款好用的电脑端录音应用程序软件,操作简单,容易上手
AD Stream Recorder(录音工具) V2.51实用录音工具软件,绿色版无需安装,可自动监控录音状态,界面简单易用,特分享给大家使用。
1、Vov Screen Recorder是一款免费的录屏软件,软件界面只有两个按钮,上面那个是录制,下面那个是停止录制,操作也是非常简单,用它记录您的屏幕,虽然只有英文界面,但是使用起来也不会太困难! 2、不同的方式来...
可以下载网上不能下载的所有格式的音频; 原理很简单;就是把音频采取录取的形式下载到本地;
使用 Screen Recorder 5+ 可以快速创建宣传视频,制作教程或简单地录制剪辑以用作音频帮助! Screen Recorder 5+ 中文版Screen Recorder 5+ 中文版 与 Android 5.0 Lollipop 及以上版本配合使用 对于 Android 4.4 ...
ZD Soft Screen Recorder可以录制桌面及网页中的视频,还可以录制高质量的游戏视频。可以录制指定的窗口及区域,也顺以录制全屏幕,可以同时录制声音,其功能与常用Fraps的相似,但有些方面比它更为强大。软件...