我对android很新。以下是我的代码,我收到了这些错误。
blinkDelay
”从未分配。Parameters
”上时。它说“ android.hardware.Camera.Parameters Alt + Enter ”。在以下代码中:
blinkButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String myString = "0101010101";
long blinkDelay 50;
for (int i = 0; i < myString.length(); i++) {
if (myString.charAt(i) == '0') {
params.setFlashMode(Parameters.FLASH_MODE_ON);
} else {
params.setFlashMode(Parameters.FLASH_MODE_OFF);
}
try {
Thread.sleep(blinkDelay);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
});
这是我的完整MainActivity.java
package com.fusion.flashlight;
import android.content.Context;
import android.content.DialogInterface;
import android.content.pm.PackageManager;
import android.hardware.Camera;
import android.hardware.camera2.CameraAccessException;
import android.hardware.camera2.CameraManager;
import android.media.MediaPlayer;
import android.os.Build;
import android.os.Bundle;
import android.support.v7.app.AlertDialog;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.ImageButton;
public class MainActivity extends AppCompatActivity {
private CameraManager mCameraManager;
private String mCameraId;
private ImageButton mTorchOnOffButton;
private ImageButton firstButton;
private Button blinkButton;
private Boolean isTorchOn;
private MediaPlayer media;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Log.d("MainActivity", "onCreate()");
setContentView(R.layout.activity_main);
mTorchOnOffButton = (ImageButton) findViewById(R.id.btnSwitch);
firstButton = (ImageButton) findViewById(R.id.btn1Switch);
blinkButton = (Button) findViewById(R.id.blinking);
isTorchOn = false;
Boolean isFlashAvailable = getApplicationContext().getPackageManager()
.hasSystemFeature(PackageManager.FEATURE_CAMERA_FLASH);
if (!isFlashAvailable) {
AlertDialog alert = new AlertDialog.Builder(MainActivity.this)
.create();
alert.setTitle("Error !!");
alert.setMessage("Your device doesn't support flash light!");
alert.setButton(DialogInterface.BUTTON_POSITIVE, "OK", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
// closing the application
finish();
System.exit(0);
}
});
alert.show();
return;
}
mCameraManager = (CameraManager) getSystemService(Context.CAMERA_SERVICE);
try {
mCameraId = mCameraManager.getCameraIdList()[0];
} catch (CameraAccessException e) {
e.printStackTrace();
}
mTorchOnOffButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
try {
if (isTorchOn) {
turnOffFlashLight();
isTorchOn = false;
} else {
turnOnFlashLight();
isTorchOn = true;
}
} catch (Exception e) {
e.printStackTrace();
}
}
});
blinkButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String myString = "0101010101";
long blinkDelay 50;
for (int i = 0; i < myString.length(); i++) {
if (myString.charAt(i) == '0') {
params.setFlashMode(Parameters.FLASH_MODE_ON);
} else {
params.setFlashMode(Parameters.FLASH_MODE_OFF);
}
try {
Thread.sleep(blinkDelay);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
});
}
public void turnOnFlashLight() {
try {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
mCameraManager.setTorchMode(mCameraId, true);
playOnOffSound();
mTorchOnOffButton.setImageResource(R.drawable.btn_on);
firstButton.setImageResource(R.drawable.btn11_on);
}
} catch (Exception e) {
e.printStackTrace();
}
}
public void turnOffFlashLight() {
try {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
mCameraManager.setTorchMode(mCameraId, false);
playOnOffSound();
mTorchOnOffButton.setImageResource(R.drawable.btn_off);
firstButton.setImageResource(R.drawable.btn11_off);
}
} catch (Exception e) {
e.printStackTrace();
}
}
private void playOnOffSound(){
media = MediaPlayer.create(MainActivity.this, R.raw.light_switch_on);
media.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mp) {
//TODO Auto-generated method stub
mp.release();
}
});
media.start();
}
@Override
protected void onStop() {
super.onStop();
if(isTorchOn){
turnOffFlashLight();
}
}
@Override
protected void onPause() {
super.onPause();
if(isTorchOn){
turnOffFlashLight();
}
}
@Override
protected void onResume() {
super.onResume();
if(isTorchOn){
turnOnFlashLight();
}
}
}
答案 0 :(得分:1)
对于blinkDelay,在分配时缺少相等的符号,
对于参数,我不知道你在哪里创建该变量。
另一方面,alt + Enter用于Android Studio自动导入Parameters类。
答案 1 :(得分:1)
无法解析符号参数。 params not define
从未分配变量“blinkDelay”。 blinkDelay having no initial value
长blinkDelay = 50;
当我将鼠标悬停在“参数”上时。它说
“android.hardware.Camera.Parameters Alt + Enter”。 Alt+Enter for import