Android:运行带锁定屏幕的应用

时间:2015-06-08 22:01:27

标签: android background

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>

1 个答案:

答案 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;
        }
    }