[android]통화 녹음
4956 단어 android
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.hw.receiver.demo.receiver"
android:versionCode="1"
android:versionName="1.0">
<application android:icon="@drawable/icon" android:label="@string/app_name">
<receiver android:name=".SMSReceive">
<intent-filter android:priority="800">
<action android:name="android.provider.Telephony.SMS_RECEIVED" />
</intent-filter>
</receiver>
<receiver android:name=".PhoneReceiver">
<intent-filter android:priority="800">
<!-- <action android:name="android.intent.action.NEW_OUTGOING_CALL" /> -->
<action android:name="android.intent.action.PHONE_STATE"/>
</intent-filter>
</receiver>
</application>
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
<uses-permission android:name="android.permission.RECEIVE_SMS"/>
<uses-permission android:name="android.permission.RECORD_AUDIO"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
</manifest>
import java.io.File;
import java.io.IOException;
import java.util.Set;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.media.MediaRecorder;
import android.os.Bundle;
import android.telephony.TelephonyManager;
import android.util.Log;
import android.widget.Toast;
public class PhoneReceiver extends BroadcastReceiver {
private static final String TAG = "PhoneReceiver";
private static MediaRecorder recorder;
private static boolean callOver = false;
@Override
public void onReceive(Context context, Intent intent) {
if(intent.getAction().equals("android.intent.action.PHONE_STATE")){
String phoneState = intent.getStringExtra(TelephonyManager.EXTRA_STATE);
/* StringBuffer sb = new StringBuffer();
String incomingNumber = intent.getStringExtra("incoming_number");
String outgoingNumber = intent.getStringExtra("outgoing_number");
Bundle bundle = intent.getExtras();
Set<String> set = bundle.keySet();
for(String key:set){
sb.append(key).append(":").append(bundle.get(key)).append("
");
}
sb.append(intent.getAction()).append("
");
sb.append("IncomingNumber:").append(incomingNumber).append("
");
sb.append("OutGoingNumber:").append(outgoingNumber).append("
");
sb.append("PhoneState:").append(phoneState).append("
");
Toast.makeText(context, sb.toString()
, 5000).show();
Log.d(TAG, sb.toString());
*/
if(phoneState.equals(TelephonyManager.EXTRA_STATE_IDLE)){
if(callOver){
stopRecord();
callOver = false;
}
Log.d(TAG, "IDLE");
}else if(phoneState.equals(TelephonyManager.EXTRA_STATE_OFFHOOK)){
callOver = true;
startRecord();
Log.d(TAG, "OFFHOOK");
}else if(phoneState.equals(TelephonyManager.EXTRA_STATE_RINGING)){
Log.d(TAG, "RINGING");
}
}
}
private void startRecord(){
Log.d(TAG, "startRecord");
String path = "/sdcard/test.mp3";
recorder = new MediaRecorder();
recorder.setAudioSource(MediaRecorder.AudioSource.MIC);
recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
Log.d(TAG, path);
recorder.setOutputFile(path);
try {
recorder.prepare();
} catch (IllegalStateException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
recorder.start();
}
private void stopRecord(){
Log.d(TAG, "stopRecord");
Log.d(TAG, ""+recorder);
recorder.stop();
recorder.release();
recorder = null;
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Kotlin의 기초 - 2부지난 글에서는 Kotlin이 무엇인지, Kotlin의 특징, Kotlin에서 변수 및 데이터 유형을 선언하는 방법과 같은 Kotlin의 기본 개념에 대해 배웠습니다. 유형 변환은 데이터 변수의 한 유형을 다른 데이터...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.