博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
android88 录音机
阅读量:6082 次
发布时间:2019-06-20

本文共 3128 字,大约阅读时间需要 10 分钟。

package com.itheima.recorder;import android.os.Bundle;import android.app.Activity;import android.content.Intent;import android.view.Menu;import android.view.View;public class MainActivity extends Activity {    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);    }    public void click(View v){        Intent intent = new Intent(this, RecorderService.class);        startService(intent);    }}
package com.itheima.recorder;import java.io.IOException;import android.app.Service;import android.content.Intent;import android.media.MediaRecorder;import android.os.IBinder;import android.telephony.PhoneStateListener;import android.telephony.TelephonyManager;public class RecorderService extends Service {    private MediaRecorder recorder;//录音api    @Override    public IBinder onBind(Intent intent) {        return null;    }    @Override    public void onCreate() {        super.onCreate();        //拿到电话管理器        TelephonyManager tm = (TelephonyManager) getSystemService(TELEPHONY_SERVICE);        //监听电话状态        //events:决定PhoneStateListener侦听什么内容        tm.listen(new MyListener(), PhoneStateListener.LISTEN_CALL_STATE);    }        class MyListener extends PhoneStateListener{        //一旦电话状态改变,此方法调用        @Override        public void onCallStateChanged(int state, String incomingNumber) {            super.onCallStateChanged(state, incomingNumber);            switch (state) {            case TelephonyManager.CALL_STATE_IDLE:                System.out.println("空闲");                if(recorder != null){                    recorder.stop();                    recorder.release();//使用硬件录音是用c语言占用资源是不会自动释放的需要手动释放                    recorder = null;                }                break;            case TelephonyManager.CALL_STATE_RINGING:                System.out.println("响铃");                if(recorder == null){                    recorder = new MediaRecorder();                    recorder.setAudioSource(MediaRecorder.AudioSource.MIC);//音频来源麦克风                    recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);                    recorder.setOutputFile("sdcard/luyin.3gp");//输出文件路径                    recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);//设置音频编码                    try {                        recorder.prepare();                    } catch (Exception e) {                        // TODO Auto-generated catch block                        e.printStackTrace();                    }                }                break;            case TelephonyManager.CALL_STATE_OFFHOOK:                System.out.println("摘机");                //开始录音                if(recorder != null){                    recorder.start();                }                break;            }        }    }}
读取电话状态
写sd卡权限
获取开机启动
开机广播接收者

 

转载地址:http://mezwa.baihongyu.com/

你可能感兴趣的文章
ASP.NET使用AspNetPager实现简单的分页功能
查看>>
热词搜索_针对关键词的样式实现步骤
查看>>
python常见报错集合
查看>>
iOS--OCR图片识别
查看>>
Handler和AsyncTask
查看>>
关于ios::sync_with_stdio(false);和 cin.tie(0)加速c++输入输出流
查看>>
浅析微信支付:统一下单接口
查看>>
网络对抗技术_实验一_网络侦查与网络扫描
查看>>
黑板模式分析
查看>>
释放Win8.1 WinSxS冗余更新,微软Dism来解决
查看>>
【BZOJ】2243 [SDOI2011]染色
查看>>
springboot集成springsession利用redis来实现session共享
查看>>
文件上传与下载总结
查看>>
【测试基础】测试用例的设计方法
查看>>
MySQL优化-》执行计划和常见索引
查看>>
ThinkPHP中通过URL重写隐藏应用的入口文件index.php的相关服务器的配置
查看>>
18、图片 & 多媒体
查看>>
第七周进度总结
查看>>
Android任务栈的运行规律
查看>>
批处理通用测试代码
查看>>