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

本文共 3224 字,大约阅读时间需要 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://www.cnblogs.com/yaowen/p/4948835.html,如需转载请自行联系原作者

你可能感兴趣的文章
在 Windows 下远程桌面连接 Linux - XManager 篇
查看>>
tomcat如何路由映射网址
查看>>
如何开始容器化
查看>>
为什么POLARDB是云计算2.0时代产品进化的关键里程碑?
查看>>
HTTP 协议解析
查看>>
十面埋伏? 程序世界里的不信任原则
查看>>
Use our script to build OGRE, CEGUI, FreeImage, Cg and OIS from CVS
查看>>
姚期智:算法将推动下一波AI浪潮,现有革新将达极限
查看>>
虚拟机设置bios第一启动为u盘
查看>>
Day4---D3:法律问题,合同和电子举证
查看>>
[译]搭建账户系统
查看>>
三种类型的DNS攻击以及应对方法
查看>>
Docker Swarm vs Kubernetes
查看>>
电商网站的支付接入该怎么做呢?
查看>>
六顶帽子思考法的好处
查看>>
关于Expression Tree和IL Emit的所谓的"性能差别"
查看>>
svn导出项目后报错汇总
查看>>
SAP数字化转型成不成功用事实说话:S/4HANA已获得3200家客户
查看>>
《社交网站界面设计(原书第2版)》——3.15 你是否在犯4种常见的用户onboarding错误...
查看>>
Salesforce即将推出Einstein人工智能CRM平台
查看>>