加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

Android实现电话录音

发布时间:2020-12-15 00:22:57 所属栏目:Java 来源:网络整理
导读:今天PHP站长网 52php.cn把收集自互联网的代码分享给大家,仅供参考。 在清单文件AndroidManifest.xml中添加权限: uses-permission android:name="android.permission.READ_PHONE_STATE"/ !-- 在SDCard中创建与删除文件权

以下代码由PHP站长网 52php.cn收集自互联网

现在PHP站长网小编把它分享给大家,仅供参考

在清单文件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"/>

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_STATE_OFFHOOK: /* 接起电话时 */
                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;
        }
    }
}
}

以上内容由PHP站长网【52php.cn】收集整理供大家参考研究

如果以上内容对您有帮助,欢迎收藏、点赞、推荐、分享。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读