2015-04-23 48 views
0

我正在尝试构建一个应用程序,其中相机闪光灯将在通话和短信传入活动中发生。但相机闪光灯在通话过程中没有打开...我写了简单的程序。在通话过程中无法打开相机闪光灯

public class MainActivity extends Activity { 
    ..... 
    .... 

    public static class AlertHandler extends BroadcastReceiver { 
      @Override 
      public void onReceive(Context context, Intent intent) { 
      System.out.println("===inside oneceive"); 
      boolean incomingCall = false; 
      Parameters alertParams; 
       Camera alertCamera; 
       String callState = intent.getStringExtra(TelephonyManager.EXTRA_STATE); 
       if (null != callState && callState.equals(TelephonyManager.EXTRA_STATE_RINGING)) { 
        incomingCall = true; 
       } 
       System.out.println("===incomingCall =="+incomingCall); 

       if(incomingCall){ 
        System.out.println("OPENING CAMERA..."); 
        alertCamera = Camera.open(); 
        alertParams = alertCamera.getParameters(); 
        alertParams.setFlashMode(Parameters.FLASH_MODE_TORCH); 
        alertCamera.setParameters(alertParams); 
        alertCamera.startPreview(); 
       }     

       } 
      } 
     } 

我得到了sysout开放相机好,但现在闪光。 请帮助一些代码修复。 logcat没有错误。

在这个应用程序玩的存储区很多,它们是如何工作的?

+0

你需要有一个线程和while循环,它将处理在手电筒 – VVB

+0

闪烁我不想来电期间blinking..just打开闪光灯...... – Abhijit

回答

1

使用此其工作

public class MainActivity extends ActionBarActivity { 

private static Camera camera; 
// flag to detect flash is on or off 
private static boolean isLighOn = false; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    camera = Camera.open(); 

} 

public static void toggle() { 

    if (isLighOn) { 

     Log.i("info", "torch is turn off!"); 
     final Parameters p = camera.getParameters(); 
     p.setFlashMode(Parameters.FLASH_MODE_OFF); 
     camera.setParameters(p); 
     camera.stopPreview(); 
     isLighOn = false; 

    } else { 

     Log.i("info", "torch is turn on!"); 
     final Parameters p = camera.getParameters(); 
     p.setFlashMode(Parameters.FLASH_MODE_TORCH); 

     camera.setParameters(p); 
     camera.startPreview(); 
     isLighOn = true; 

    } 

} 

} 

public class AlertHandler extends BroadcastReceiver { 

boolean incomingCall = false; 

@Override 
public void onReceive(Context context, Intent intent) { 

    String callState = intent.getStringExtra(TelephonyManager.EXTRA_STATE); 

    if (null != callState 
      && callState.equals(TelephonyManager.EXTRA_STATE_RINGING)) { 
     incomingCall = true; 

    } 

    if (incomingCall) { 
     MainActivity.toggle(); 
    } else { 
     MainActivity.toggle(); 
    } 

} 
} 
+0

喜sandeep,我只是分解我的方法作为你的建议..但它不是打开闪光灯...我已调试,得到正确的系统输出在打开和关闭方法,但不打开闪光灯在通话期间.. :( – Abhijit

+0

你有添加这些权限<使用权限android:name =“android.permission.CAMERA”/> <使用权限android:name =“android.permission.READ_PHONE_STATE”/> <使用功能android:name =“android.hardware.camera”/> –

+0

是......他们在场......权限在那里......还有接收者在清单中的意图...... – Abhijit