Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public class TService extends Service {
- MediaRecorder recorder;
- File audiofile;
- String name, phonenumber;
- String audio_format;
- public String Audio_Type;
- int audioSource;
- Context context;
- private Handler handler;
- Timer timer;
- Boolean offHook = false, ringing = false;
- Toast toast;
- Boolean isOffHook = false;
- private boolean recordstarted = false;
- private static final String ACTION_IN = "android.intent.action.PHONE_STATE";
- private static final String ACTION_OUT = "android.intent.action.NEW_OUTGOING_CALL";
- private CallBr br_call;
- @Override
- public IBinder onBind(Intent arg0) {
- // TODO Auto-generated method stub
- return null;
- }
- @Override
- public void onDestroy() {
- Log.d("service", "destroy");
- super.onDestroy();
- }
- @Override
- public int onStartCommand(Intent intent, int flags, int startId) {
- // final String terminate =(String)
- // intent.getExtras().get("terminate");//
- // intent.getStringExtra("terminate");
- // Log.d("TAG", "service started");
- //
- // TelephonyManager telephony = (TelephonyManager)
- // getSystemService(Context.TELEPHONY_SERVICE); // TelephonyManager
- // // object
- // CustomPhoneStateListener customPhoneListener = new
- // CustomPhoneStateListener();
- // telephony.listen(customPhoneListener,
- // PhoneStateListener.LISTEN_CALL_STATE);
- // context = getApplicationContext();
- final IntentFilter filter = new IntentFilter();
- filter.addAction(ACTION_OUT);
- filter.addAction(ACTION_IN);
- this.br_call = new CallBr();
- this.registerReceiver(this.br_call, filter);
- // if(terminate != null) {
- // stopSelf();
- // }
- return START_NOT_STICKY;
- }
- public class CallBr extends BroadcastReceiver {
- Bundle bundle;
- String state;
- String inCall, outCall;
- public boolean wasRinging = false;
- @Override
- public void onReceive(Context context, Intent intent) {
- if (intent.getAction().equals(ACTION_IN)) {
- if ((bundle = intent.getExtras()) != null) {
- state = bundle.getString(TelephonyManager.EXTRA_STATE);
- if (state.equals(TelephonyManager.EXTRA_STATE_RINGING)) {
- inCall = bundle.getString(TelephonyManager.EXTRA_INCOMING_NUMBER);
- wasRinging = true;
- Toast.makeText(context, "IN : " + inCall, Toast.LENGTH_LONG).show();
- } else if (state.equals(TelephonyManager.EXTRA_STATE_OFFHOOK)) {
- if (wasRinging == true) {
- Toast.makeText(context, "ANSWERED", Toast.LENGTH_LONG).show();
- String out = new SimpleDateFormat("dd-MM-yyyy hh-mm-ss").format(new Date());
- File sampleDir = new File(Environment.getExternalStorageDirectory(), "/TestRecordingDasa");
- if (!sampleDir.exists()) {
- sampleDir.mkdirs();
- }
- Log.d("TService", "onReceive: "+sampleDir);
- String file_name = "Outgoing";
- try {
- audiofile = File.createTempFile(file_name, ".wav", sampleDir);
- } catch (IOException e) {
- e.printStackTrace();
- }
- String path = Environment.getExternalStorageDirectory().getAbsolutePath();
- recorder = new MediaRecorder();
- // recorder.setAudioSource(MediaRecorder.AudioSource.VOICE_CALL);
- // recorder.setAudioSource(MediaRecorder.AudioSource.MIC);
- recorder.setAudioSource(MediaRecorder.AudioSource.MIC);
- recorder.setOutputFormat(MediaRecorder.OutputFormat.DEFAULT);
- recorder.setAudioEncoder(MediaRecorder.AudioEncoder.DEFAULT);
- recorder.setOutputFile(audiofile.getAbsolutePath());
- try {
- recorder.prepare();
- } catch (IllegalStateException e) {
- e.printStackTrace();
- } catch (IOException e) {
- e.printStackTrace();
- }
- recorder.start();
- recordstarted = true;
- }
- } else if (state.equals(TelephonyManager.EXTRA_STATE_IDLE)) {
- wasRinging = false;
- Toast.makeText(context, "REJECT || DISCO", Toast.LENGTH_LONG).show();
- if (recordstarted) {
- recorder.stop();
- recordstarted = false;
- }
- }
- }
- } else if (intent.getAction().equals(ACTION_OUT)) {
- if ((bundle = intent.getExtras()) != null) {
- outCall = intent.getStringExtra(Intent.EXTRA_PHONE_NUMBER);
- Toast.makeText(context, "OUT : " + outCall, Toast.LENGTH_LONG).show();
- File sampleDir = new File(Environment.getExternalStorageDirectory(), "/TestRecordingDasa");
- if (!sampleDir.exists()) {
- sampleDir.mkdirs();
- }
- Log.d("TService", "onReceive: "+sampleDir);
- String file_name = "Record";
- try {
- audiofile = File.createTempFile(file_name, ".wav", sampleDir);
- } catch (IOException e) {
- e.printStackTrace();
- }
- String path = Environment.getExternalStorageDirectory().getAbsolutePath();
- recorder = new MediaRecorder();
- // recorder.setAudioSource(MediaRecorder.AudioSource.VOICE_CALL);
- // recorder.setAudioSource(MediaRecorder.AudioSource.MIC);
- recorder.setAudioSource(MediaRecorder.AudioSource.MIC);
- recorder.setOutputFormat(MediaRecorder.OutputFormat.DEFAULT);
- recorder.setAudioEncoder(MediaRecorder.AudioEncoder.DEFAULT);
- recorder.setOutputFile(audiofile.getAbsolutePath());
- try {
- recorder.prepare();
- } catch (IllegalStateException e) {
- e.printStackTrace();
- } catch (IOException e) {
- e.printStackTrace();
- }
- recorder.start();
- recordstarted = true;
- }
- }
- LocalBroadcastManager.getInstance(context).sendBroadcast(new Intent("callRecord"));
- }
- }
- }
- public class DeviceAdminDemo extends DeviceAdminReceiver {
- @Override
- public void onReceive(Context context, Intent intent) {
- super.onReceive(context, intent);
- }
- public void onEnabled(Context context, Intent intent) {
- };
- public void onDisabled(Context context, Intent intent) {
- };
- }
- public class MainActivity extends Activity {
- private static final int REQUEST_CODE = 0;
- private DevicePolicyManager mDPM;
- private ComponentName mAdminName;
- private static final int PERMISSION_REQUEST_CODE= 123;
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_main);
- if (checkPermission()){
- Toast.makeText(this, "Permission granted", Toast.LENGTH_SHORT).show();
- }else{
- requestPermission();
- }
- try {
- // Initiate DevicePolicyManager.
- mDPM = (DevicePolicyManager) getSystemService(Context.DEVICE_POLICY_SERVICE);
- mAdminName = new ComponentName(this, DeviceAdminDemo.class);
- if (!mDPM.isAdminActive(mAdminName)) {
- Intent intent = new Intent(DevicePolicyManager.ACTION_ADD_DEVICE_ADMIN);
- intent.putExtra(DevicePolicyManager.EXTRA_DEVICE_ADMIN, mAdminName);
- intent.putExtra(DevicePolicyManager.EXTRA_ADD_EXPLANATION, "Click on Activate button to secure your application.");
- startActivityForResult(intent, REQUEST_CODE);
- } else {
- // mDPM.lockNow();
- // Intent intent = new Intent(MainActivity.this,
- // TrackDeviceService.class);
- // startService(intent);
- }
- } catch (Exception e) {
- e.printStackTrace();
- }
- LocalBroadcastManager.getInstance(MainActivity.this).registerReceiver(receiver, new IntentFilter("callRecord"));
- Intent intent = new Intent(MainActivity.this, TService.class);
- startService(intent);
- }
- private BroadcastReceiver receiver = new BroadcastReceiver() {
- @Override
- public void onReceive(Context context, Intent intent) {
- if (intent.getAction().equalsIgnoreCase("callRecord")) {
- Toast.makeText(MainActivity.this, "Call record", Toast.LENGTH_SHORT).show();
- }
- }
- };
- private boolean checkPermission(){
- if (ContextCompat.checkSelfPermission(MainActivity.this, Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED){
- return true;
- }else{
- return false;
- }
- }
- private void requestPermission(){
- if (ActivityCompat.shouldShowRequestPermissionRationale(MainActivity.this,Manifest.permission.ACCESS_FINE_LOCATION)
- || ActivityCompat.shouldShowRequestPermissionRationale(MainActivity.this,Manifest.permission.ACCESS_COARSE_LOCATION)
- || ActivityCompat.shouldShowRequestPermissionRationale(MainActivity.this,Manifest.permission.CALL_PHONE)
- || ActivityCompat.shouldShowRequestPermissionRationale(MainActivity.this,Manifest.permission.SEND_SMS)
- || ActivityCompat.shouldShowRequestPermissionRationale(MainActivity.this,Manifest.permission.READ_CONTACTS)
- || ActivityCompat.shouldShowRequestPermissionRationale(MainActivity.this, Manifest.permission.READ_EXTERNAL_STORAGE)
- || ActivityCompat.shouldShowRequestPermissionRationale(MainActivity.this, Manifest.permission.WRITE_EXTERNAL_STORAGE)
- || ActivityCompat.shouldShowRequestPermissionRationale(MainActivity.this, Manifest.permission.READ_PHONE_STATE)
- || ActivityCompat.shouldShowRequestPermissionRationale(MainActivity.this, Manifest.permission.PROCESS_OUTGOING_CALLS)
- || ActivityCompat.shouldShowRequestPermissionRationale(MainActivity.this, Manifest.permission.RECORD_AUDIO)
- || ActivityCompat.shouldShowRequestPermissionRationale(MainActivity.this, Manifest.permission.CAPTURE_AUDIO_OUTPUT)){
- Toast.makeText(MainActivity.this,"Allow Us pemissions. Please allow in App Settings for additional functionality.",Toast.LENGTH_LONG).show();
- } else {
- ActivityCompat.requestPermissions(MainActivity.this,new String[]{Manifest.permission.ACCESS_FINE_LOCATION,Manifest.permission.ACCESS_COARSE_LOCATION,
- Manifest.permission.CALL_PHONE, Manifest.permission.SEND_SMS, Manifest.permission.READ_CONTACTS,
- Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.READ_PHONE_STATE,
- Manifest.permission.PROCESS_OUTGOING_CALLS, Manifest.permission.RECORD_AUDIO, Manifest.permission.CAPTURE_AUDIO_OUTPUT}, PERMISSION_REQUEST_CODE);
- }
- }
- @Override
- public void onRequestPermissionsResult(int requestCode, String permissions[], int[] grantResults) {
- switch (requestCode) {
- case PERMISSION_REQUEST_CODE:
- if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
- Toast.makeText(this, "Permission Granted, ", Toast.LENGTH_SHORT).show();
- } else {
- Toast.makeText(this, "Permission not Granted", Toast.LENGTH_SHORT).show();
- }
- break;
- }
- }
- @Override
- protected void onActivityResult(int requestCode, int resultCode, Intent data) {
- super.onActivityResult(requestCode, resultCode, data);
- if (REQUEST_CODE == requestCode) {
- Intent intent = new Intent(MainActivity.this, TService.class);
- startService(intent);
- }
- }
- @Override
- public void onResume() {
- LocalBroadcastManager.getInstance(this).registerReceiver(receiver, new IntentFilter("callRecord"));
- super.onResume();
- }
- @Override
- public void onPause() {
- super.onPause();
- LocalBroadcastManager.getInstance(this).unregisterReceiver(receiver);
- }
- }
- <?xml version="1.0" encoding="utf-8"?>
- <manifest xmlns:android="http://schemas.android.com/apk/res/android"
- package="com.example.practice.callrecorder">
- <uses-permission android:name="android.permission.CAPTURE_AUDIO_OUTPUT"/>
- <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
- <uses-permission android:name="android.permission.RECORD_AUDIO" />
- <uses-permission android:name="android.permission.PROCESS_OUTGOING_CALLS" />
- <uses-permission android:name="android.permission.READ_PHONE_STATE" />
- <uses-permission android:name="android.permission.STORAGE" />
- <uses-permission android:name="android.permission.CALL_PHONE"/>
- <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
- <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
- <uses-permission android:name="android.permission.SEND_SMS"/>
- <uses-permission android:name="android.permission.READ_CONTACTS"/>
- <application
- android:allowBackup="true"
- android:icon="@mipmap/ic_launcher"
- android:label="@string/app_name"
- android:roundIcon="@mipmap/ic_launcher_round"
- android:supportsRtl="true"
- android:theme="@style/AppTheme">
- <activity android:name=".MainActivity">
- <intent-filter>
- <action android:name="android.intent.action.MAIN" />
- <category android:name="android.intent.category.LAUNCHER" />
- </intent-filter>
- </activity>
- <receiver
- android:name=".DeviceAdminDemo"
- android:description="@string/app_name"
- android:label="@string/app_name"
- android:permission="android.permission.BIND_DEVICE_ADMIN">
- <meta-data
- android:name="android.app.device_admin"
- android:resource="@xml/my_admin" />
- <intent-filter>
- <action android:name="android.app.action.DEVICE_ADMIN_ENABLED" />
- <action android:name="android.app.action.DEVICE_ADMIN_DISABLED" />
- <action android:name="android.app.action.DEVICE_ADMIN_DISABLE_REQUESTED" />
- </intent-filter>
- </receiver>
- <service
- android:name=".TService"
- android:enabled="true"
- android:exported="true">
- </service>
- </application>
- <device-admin xmlns:android="http://schemas.android.com/apk/res/android" >
- <uses-policies>
- <force-lock />
- </uses-policies>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement