前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Android实现电话录音

Android实现电话录音

原创
作者头像
用户7999227
修改2021-09-22 10:42:29
1.1K0
修改2021-09-22 10:42:29
举报
文章被收录于专栏:Java小王子
代码语言:javascript
复制
在清单文件AndroidManifest.xml中添加权限:
    <uses-permission android:name="android.permission.READ_PHONE_STATE"/>
    <!-- 在SDCard中创建与删除文件权限 -->
    <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>
    <!-- 往SDCard写入数据权限 -->
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
    <uses-permission android:name="android.permission.RECORD_AUDIO"/>
    <!-- 访问internet权限 -->
    <uses-permission android:name="android.permission.INTERNET"/>
    <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
代码语言:javascript
复制
public class PhoneListenerService extends Service {
@Override
public void onCreate() {
        TelephonyManager manager = 
                  (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
        //监听电话的状态
    manager.listen(new MyListener(), PhoneStateListener.LISTEN_CALL_STATE);
}
private final class MyListener extends PhoneStateListener {
    private String num;
    private MediaRecorder recorder;
    public void onCallStateChanged(int state, String incomingNumber) {
        switch (state) {
            case TelephonyManager.CALL_STATE_RINGING:  / 电话进来时 /
                num = incomingNumber;
                break;
            case TelephonyManager.CALL_STATEOFFHOOK: / 接起电话时 /
                try {
                    File file = new File(Environment.getExternalStorageDirectory(), num + "" + System.currentTimeMillis() + ".3gp");
                    recorder = new MediaRecorder();
                    recorder.setAudioSource(AudioSource.MIC);//声音采集来源(话筒)
                    recorder.setOutputFormat(OutputFormat.THREE_GPP);//输出的格式
                    recorder.setAudioEncoder(AudioEncoder.AMR_NB);//音频编码方式
                    recorder.setOutputFile(file.getAbsolutePath());//输出方向
                    recorder.prepare();
                    recorder.start();
                } catch (Exception e) {
                    e.printStackTrace();
                }
                break;
            case TelephonyManager.CALL_STATE_IDLE:  / 无任何状态时 /
                if (recorder != null) {
                    recorder.stop();
                    recorder.release();
                }
                break;
        }
    }
}
}</pre> 

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档