Android编程新手。我想在android studio中创建一个非常简单的手电筒应用程序,我希望能够在手机锁定时作为后台活动运行应用程序。我已经明白我应该使用服务,但我无法弄清楚在我的代码中如何或在何处实现它。 谢谢。
MainActivity:
public class MainActivity extends Activity {
//flag to detect flash is on or off
private boolean isLightOn = false;
private Camera camera;
private ImageButton button;
@Override
protected void onStop() {
super.onStop();
if (camera != null) {
camera.release();
}
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
button = (ImageButton) findViewById(R.id.imageButton);
Context context = this;
PackageManager pm = context.getPackageManager();
// if device support camera?
if (!pm.hasSystemFeature(PackageManager.FEATURE_CAMERA)) {
return;
}
camera = open();
final Parameters p = camera.getParameters();
button.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
if (isLightOn) {
p.setFlashMode(FLASH_MODE_OFF);
camera.setParameters(p);
camera.stopPreview();
isLightOn = false;
button.setImageResource(R.drawable.onbuttontrans);
} else {
p.setFlashMode(Parameters.FLASH_MODE_TORCH);
camera.setParameters(p);
camera.startPreview();
button.setImageResource(R.drawable.offbuttontrans);
isLightOn = true;
}
}
});
清单:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.g131146.flashlight" >
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk android:minSdkVersion="10" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-feature android:name="android.hardware.camera" />
<application android:theme="@android:style/Theme.Black.NoTitleBar"
android:icon="@drawable/appicon">
<activity
android:label="Flashlight"
android:name=".MainActivity">
<intent-filter >
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
答案 0 :(得分:1)
我正面临着这个类似的问题,并通过以下方法解决了这个问题。 在这里,我们基本上将onPause和onStop方法中的代码组合在一起。因此你可以在那里注释掉代码。我没有真正使用任何服务,因为这解决了这个问题。希望能帮助到你! 在MainActivity中添加:
@Override
public void onBackPressed() {
super.onBackPressed();
myParameters = myCamera.getParameters();
myParameters.setFlashMode(Parameters.FLASH_MODE_OFF);
myCamera.setParameters(myParameters);
myCamera.stopPreview();
FlashOn = false;//this is a boolean
if (myCamera != null) {
myCamera.release();
myCamera = null;
}
}