2013-03-23 83 views
0

我想創建一個基本的查找我的手機應用程序,我遇到了一些問題。到目前爲止,我能夠將一個代碼字發送到我的手機並讓它播放一首歌曲。接下來,我希望能夠發短信給不同的關鍵詞,讓它在穩定的光線或脈動的情況下開啓相機閃光燈。到目前爲止,我已經看到了很多示例代碼,但我無法弄清楚它爲什麼不適合我。爲了讓我的安卓相機閃光燈開啓,缺少什麼?

我已經包含在我的清單中訪問相機和相機閃光燈的權限。 我已經嘗試了這個鏈接的兩個例子Setting Parameters.FLASH_MODE_TORCH doesn't work on Droid X 2.3

但是我看到用於打開相機閃光燈的其他幾個選項需要整個類而不是一個小功能。

這裏是我的代碼至今:

import java.util.Timer; 
import java.util.TimerTask; 
import android.app.Activity; 
import android.content.BroadcastReceiver; 
import android.content.ContentResolver; 
import android.content.ContentValues; 
import android.content.Context; 
import android.content.Intent; 
import android.content.pm.PackageManager; 
import android.graphics.Camera; 
import android.hardware.*; 
import android.hardware.Camera.Parameters; 
import android.media.MediaPlayer; 
import android.net.Uri; 
import android.os.Bundle; 
import android.telephony.SmsMessage; 
import android.widget.Toast; 

public class SmsReceiver extends BroadcastReceiver { 

    public static final String SMS_EXTRA_NAME = "pdus"; 
    public static final String SMS_URI = "content://sms"; 

    public void onReceive(Context context, Intent intent) { 
     // Get SMS map from Intent 
     Bundle extras = intent.getExtras(); 

     String messages = ""; 

     if (extras != null) { 
      // Get received SMS array 
      Object[] smsExtra = (Object[]) extras.get(SMS_EXTRA_NAME); 

      // Get ContentResolver object for pushing encrypted SMS to incoming 
      // folder 
      ContentResolver contentResolver = context.getContentResolver(); 

      for (int i = 0; i < smsExtra.length; ++i) { 
       SmsMessage sms = SmsMessage.createFromPdu((byte[]) smsExtra[i]); 

       String body = sms.getMessageBody().toString(); 
       String address = sms.getOriginatingAddress(); 

       messages += "SMS from " + address + " :\n"; 
       messages += body + "\n"; 

      } 

      // Display SMS message 
      Toast.makeText(context, "WE GOT A MESSAGE", Toast.LENGTH_SHORT) 
        .show(); 

      // plays eye of the tiger for 45 seconds 
      if (messages.contains("Hey Sarah")) { 
       final MediaPlayer mp = MediaPlayer.create(context, 
         R.raw.sound_file_1); 
       mp.start(); 

       // play ring tone for 45 seconds 
       new Timer().schedule(new TimerTask() { 
        @Override 
        public void run() { 
         mp.stop(); 
        } 
       }, 45000); 
      } 

      //turn the flash on 
      if (messages.contains("Hey Geoff")) { 

       Camera mCamera = Camera.open(); 
       mCamera.startPreview(); 
       Camera.Parameters params = mCamera.getParameters(); 
       if (params.getFlashMode() != null) { 
         params.setFlashMode(Camera.Parameters.FLASH_MODE_TORCH); 
       } 
       mCamera.setParameters(params); 
      } 
     } 
    } 
} 

這似乎在與camera.open)的問題((錯誤:該方法的open()是未定義的類型相機) 與startPrevies ()(錯誤:添加投地mCamera) 與Camera.Parameters(錯誤:Camera.Parameters不能被解析爲一個類型) 等等

的是,這個代碼段試圖訪問Android的問題。 graphics.Camera代替android.hardware.Camera?我是全新的android,所以對我來說這是一個陡峭的學習曲線。

回答

1

import android.graphics.Camera需要刪除 - 否則不清楚哪臺攝像機正在使用。

一直在學習新事物!

+1

import android.hardware.Camera;代替。謝謝。 – 2013-04-20 15:59:24