我正在尝试让设备收到来电时使LED闪光灯闪烁。我的代码在接收中是可以工作的..但是闪光灯不闪烁请检查代码并给我一些建议为什么这个代码不起作用...感谢adv
MainActivity
public class MainActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}
`
BroadcastReceiver
`package com.example.flashringing;
import org.apache.commons.logging.Log;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.hardware.Camera;
import android.telephony.TelephonyManager;
import android.widget.Toast;
public class IncomingCall extends BroadcastReceiver {
private Camera camera;
private boolean isFlashOn;
private boolean hasFlash;
Camera.Parameters params;
@Override
public void onReceive(Context context, Intent intent) {
String state = intent.getStringExtra(TelephonyManager.EXTRA_STATE);
String msg = "Ringing" + state;
if (state.equals(TelephonyManager.EXTRA_STATE_RINGING)){
String incomingNumber
=intent.getStringExtra(TelephonyManager.EXTRA_INCOMING_NUMBER);
// msg += ". Incoming number is " + incomingNumber;
Toast.makeText(context, "Brodcaststart>>>>",
Toast.LENGTH_LONG).show();
System.out.print("Brodcaststart>>>>");
// TODO This would be a good place to "Do something when the
phone rings" ;-)
String myString = "0101010101";
long blinkDelay = 50;
getCamera();
Toast.makeText(context, "cameraopen>>>>",
Toast.LENGTH_LONG).show();
System.out.print("cameraopen>>>>");
for (int i = 0; i < myString.length(); i++) {
if (myString.charAt(i) == '0') {
// params.setFlashMode(Camera.Parameters.FLASH_MODE_ON);
turnOnFlash();
} else {
//
params.setFlashMode(Camera.Parameters.FLASH_MODE_OFF);
turnOffFlash();
}
try {
Thread.sleep(blinkDelay);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
Toast.makeText(context, msg, Toast.LENGTH_LONG).show();
}
private void turnOnFlash() {
if (!isFlashOn) {
if (camera == null || params == null) {
return;
}
System.out.print("turnonflash>>>>");
params = camera.getParameters();
params.setFlashMode(Camera.Parameters.FLASH_MODE_TORCH);
camera.setParameters(params);
camera.startPreview();
isFlashOn = true;
}
}
private void getCamera() {
if (camera == null) {
try {
camera = Camera.open();
params = camera.getParameters();
System.out.print("cameraopen>>>>");
} catch (RuntimeException e) {
// Log.d( Log.e("Camera Error. Failed to Open. Error: ",
e.getLocalizedMessage()););
System.out.println("Camera Error. Failed to Open. Error:
"+e.getLocalizedMessage());
}
}
}
private void turnOffFlash() {
if (isFlashOn) {
if (camera == null || params == null) {
return;
}
params = camera.getParameters();
params.setFlashMode(Camera.Parameters.FLASH_MODE_OFF);
camera.setParameters(params);
camera.release();
isFlashOn = false;
}
}
}`
AndroidManifest.xml`<manifest
xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.flashringing"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="14"
android:targetSdkVersion="19" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name="com.example.flashringing.MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<receiver
android:name="com.example.flashringing.IncomingCall"
android:enabled="true" >
<intent-filter>
<action android:name="android.intent.action.PHONE_STATE" >
</action>
</intent-filter>
</receiver>
</application>
</manifest>``
最佳答案
我面临类似的问题,仍然无法正常工作。但我认为您可能缺少使用相机的某些权限,即:
<uses-permission android:name="android.permission.CAMERA"/>
<uses-feature android:name="android.hardware.camera"/>
<uses-feature android:name="android.hardware.Camera.autofocus"/>
让我知道您如何解决问题
关于java - 我正在尝试通过摄像头指示灯在通话中闪烁,但工作不正常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32245436/