Android手电筒应用程序不适用于galaxy S1和Droid X
我的手电筒应用程序可以与S2 S3和其他几款android手机配合使用,没有S1那么先进,但由于某些原因,无法打开S1s闪光灯。droid X和其他几款熟悉兼容的机器人也出现了这个问题。代码如下Android手电筒应用程序不适用于galaxy S1和Droid X,android,led,flashlight,Android,Led,Flashlight,我的手电筒应用程序可以与S2 S3和其他几款android手机配合使用,没有S1那么先进,但由于某些原因,无法打开S1s闪光灯。droid X和其他几款熟悉兼容的机器人也出现了这个问题。代码如下 public class FlashLightActivity extends Activity { private Camera mCamera; private Boolean mFlashlight = false; private Boolean sound = t
public class FlashLightActivity extends Activity {
private Camera mCamera;
private Boolean mFlashlight = false;
private Boolean sound = true;
private ImageButton button;
private static MediaPlayer mediaPlayer;
boolean flashInstalled = true;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_flashlight);
AdView ad = (AdView) findViewById(R.id.adView);
ad.loadAd(new AdRequest());
button = (ImageButton) findViewById(R.id.onoff);
mediaPlayer = new MediaPlayer();
Context context = this;
PackageManager pm = context.getPackageManager();
// if device support camera?
if (!pm.hasSystemFeature(PackageManager.FEATURE_CAMERA)) {
Log.e("err", "Device has no camera!");
Toast.makeText(this, "Your device does not have FlashLight",
Toast.LENGTH_LONG).show();
return;
}
try {
// Checking if flashplayer is available
ApplicationInfo ai = pm.getApplicationInfo("com.adobe.flashplayer",
0);
if (ai != null)
flashInstalled = true;
} catch (NameNotFoundException e) {
flashInstalled = false;
}
button.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
if (mCamera != null) {
Parameters params = mCamera.getParameters();
if (mFlashlight) {
params.setFlashMode(Parameters.FLASH_MODE_OFF);
button.setImageResource(R.drawable.off_icon);
mFlashlight = false;
} else {
params.setFlashMode(Parameters.FLASH_MODE_TORCH);
button.setImageResource(R.drawable.on_icon);
mediaPlayer = MediaPlayer.create(
FlashLightActivity.this, R.raw.boom);
if (mediaPlayer != null && mediaPlayer.isPlaying()) {
mediaPlayer.stop();
}
if (sound) {
mediaPlayer.stop();
mediaPlayer = null;
} else {
mediaPlayer.start();
}
v.setKeepScreenOn(true);
mFlashlight = true;
}
mCamera.setParameters(params);
}
}
});
}
@Override
public void onResume() {
super.onResume();
SharedPreferences preferences = getSharedPreferences("pref",
MODE_PRIVATE);
sound = preferences.getBoolean("sound", false);
if (mFlashlight) {
button.setImageResource(R.drawable.on_icon);
} else {
button.setImageResource(R.drawable.off_icon);
}
try {
this.mCamera = Camera.open();
} catch (Exception e) {
}
}
@Override
public void onPause() {
super.onPause();
if (this.mCamera != null) {
this.mCamera.release();
this.mCamera = null;
}
this.mFlashlight = false;
}
@Override
public void onDestroy() {
super.onDestroy();
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.activity_tabs, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.menu_settings:
Intent menuIntent = new Intent(this, MenuActivity.class);
startActivity(menuIntent);
return true;
default:
return super.onOptionsItemSelected(item);
}
}
}
我发现在DroidX上唯一有效的是Siddhpura Amit在下面的回答中给出的代码:。他检查了制造商,看看里面是否有字符串“motorola”。如果有,他有特殊的代码可以打开或关闭闪光灯LED。我可以验证它是否工作,因为我有一个摩托罗拉Droid X,这是我在应用程序中使用的代码。有两件事:1。这在我的三星Galaxy SII上不起作用(天知道为什么,因为我正试图让它自己起作用。我的东西在Sony XPeria S上起作用,但在SGS II上不起作用)。2.你是在假设,所有的手机都支持闪光灯模式,但也有一些不支持。你试过打开闪光灯吗?你试过别人的手电筒应用程序吗?如果其他应用程序在您的SG SI上工作,那么很可能您只是缺少了一些东西:)