EX07_12SMSreceiver.java
上传用户:vip_99
上传日期:2021-03-27
资源大小:61159k
文件大小:3k
源码类别:

android开发

开发平台:

Java

  1. package irdc.ex07_12;
  2. import java.io.File;
  3. import android.content.BroadcastReceiver;
  4. import android.content.Context;
  5. import android.content.Intent;
  6. import android.media.MediaRecorder;
  7. import android.os.Bundle;
  8. import android.os.Environment;
  9. import android.util.Log;
  10. public class EX07_12SMSreceiver extends BroadcastReceiver
  11. {
  12.   private static final String mACTION 
  13.   = "android.provider.Telephony.SMS_RECEIVED";
  14.   private String strTempFile = "ex07_12_";
  15.   private File myRecAudioFile;
  16.   private File myRecAudioDir;
  17.   private MediaRecorder mMediaRecorder01;
  18.   /* 设置录音秒数 */
  19.   private int SleepSec = 30;
  20.   private boolean isStartRec;
  21.   private long startRecTime;
  22.   private Context myContext;
  23.   @Override
  24.   public void onReceive(Context context, Intent intent)
  25.   {
  26.     myContext = context;
  27.     if (intent.getAction().equals(mACTION))
  28.     {
  29.       Intent i = new Intent(myContext, EX07_12.class);
  30.       Bundle mbundle = new Bundle();
  31.       mbundle.putString("TextView_Text", "收到简讯");
  32.       i.putExtras(mbundle);
  33.       i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
  34.       myContext.startActivity(i);
  35.       /* 开始录音 */
  36.       startRec();
  37.       new Thread(mTasks).start();
  38.     }
  39.   }
  40.   private Runnable mTasks = new Runnable()
  41.   {
  42.     @Override
  43.     public void run()
  44.     {
  45.       /* 跑30秒后再运行停止录音 */
  46.       while (System.currentTimeMillis() <= startRecTime + SleepSec
  47.           * 1000)
  48.       {
  49.         try
  50.         {
  51.           Thread.sleep(1000);
  52.         }
  53.         catch (InterruptedException e)
  54.         {
  55.           // TODO Auto-generated catch block
  56.           e.printStackTrace();
  57.         }
  58.       }
  59.       /* 停止录音 */
  60.       stopRec();
  61.     }
  62.   };
  63.   private void startRec()
  64.   {
  65.     try
  66.     {
  67.       if (Environment.getExternalStorageState().equals(
  68.           android.os.Environment.MEDIA_MOUNTED))
  69.       {
  70.         /* 取得开始运行的时间 */
  71.         startRecTime = System.currentTimeMillis();
  72.         /* 取得SD Card路径作为录音的文件位置 */
  73.         myRecAudioDir = Environment.getExternalStorageDirectory();
  74.         /* 创建录音频文件 */
  75.         myRecAudioFile = File.createTempFile(strTempFile, ".amr",
  76.             myRecAudioDir);
  77.         mMediaRecorder01 = new MediaRecorder();
  78.         /* 设置录音来源为麦克风 */
  79.         mMediaRecorder01
  80.             .setAudioSource(MediaRecorder.AudioSource.MIC);
  81.         mMediaRecorder01
  82.             .setOutputFormat(MediaRecorder.OutputFormat.DEFAULT);
  83.         mMediaRecorder01
  84.             .setAudioEncoder(MediaRecorder.AudioEncoder.DEFAULT);
  85.         mMediaRecorder01.setOutputFile(myRecAudioFile
  86.             .getAbsolutePath());
  87.         mMediaRecorder01.prepare();
  88.         mMediaRecorder01.start();
  89.         isStartRec = true;
  90.         Log.i("EX07_12SMSreceiver", "startRec");
  91.       }
  92.       else
  93.       {
  94.         SleepSec = 1;
  95.       }
  96.     } catch (Exception e)
  97.     {
  98.       e.printStackTrace();
  99.     }
  100.   }
  101.   private void stopRec()
  102.   {
  103.     Log.i("EX07_12SMSreceiver", "stopRec");
  104.     if (isStartRec)
  105.     {
  106.       /* 停止录音 */
  107.       mMediaRecorder01.stop();
  108.       mMediaRecorder01.release();
  109.       mMediaRecorder01 = null;
  110.     }
  111.   }
  112. }