设备屏幕关闭/睡眠时手电筒不工作(android studio)

时间:2016-07-23 12:33:43

标签: android performance android-studio flashlight

我创建了一个手电筒应用程序,手电筒工作。但是当设备屏幕电源关闭/睡眠时手电筒不工作。 我希望手电筒继续亮,当设备屏幕关闭/睡眠时..

我是这个网站的新手,我不知道,如何上传完整代码, 所以我在我的博客网站上传代码

manifest code

<application        android:allowBackup="true"        android:icon="@mipmap/ic_launcher"        android:label="@string/app_name"        android:supportsRtl="true"        android:theme="@style/AppTheme">
    <activity android:name=".MainActivity" android:noHistory="true"            android:screenOrientation="portrait">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    <activity android:name=".About" android:noHistory="true"            android:screenOrientation="portrait"            >

    </activity>
</application>
<uses-permission android:name="android.permission.CAMERA"></uses-permission>
<uses-feature android:name="android.hardware.Camera"></uses-feature>

please see full code here

2 个答案:

答案 0 :(得分:0)

在if(!isOn)块中添加以下代码:

getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);

屏幕永远不会睡觉。 然后在该语句的else块中添加以下代码,重新启用睡眠功能:

getWindow().clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);

如果您在结束时使用onStop()方法在用户关闭应用时关闭相机,请添加相同的代码getWindow().clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); 在那个街区。

答案 1 :(得分:-1)

MainActivity.java code 

public class MainActivity extends AppCompatActivity {
ImageButton imageButton;
Camera camera;
Camera.Parameters parameters;
boolean isflash=false;
boolean isOn=false;

@覆盖     protected void onCreate(Bundle savedInstanceState){         super.onCreate(savedInstanceState);         的setContentView(R.layout.activity_main);         imageButton =(ImageButton)findViewById(R.id.imageButton); 如果(getApplicationContext()。getPackageManager()。hasSystemFeature(PackageManager.FEATURE_CAMERA_FLASH))         {             相机= Camera.open();             参数= camera.getParameters();             isflash = TRUE;         }         imageButton.setOnClickListener(new View.OnClickListener(){

        @Override
        public void onClick(View v){

            if (isflash)
            {
                if (!isOn)
                {
                    imageButton.setImageResource(R.drawable.on);
                    parameters.setFlashMode(Parameters.FLASH_MODE_TORCH);
                    camera.setParameters(parameters);
                    camera.startPreview();
                    isOn=true;

                }
                else
                {
                    imageButton.setImageResource(R.drawable.off);
                    parameters.setFlashMode(Parameters.FLASH_MODE_OFF);
                    camera.setParameters(parameters);
                    camera.stopPreview();
                    isOn=false;
                }

            }
            else
            {
                AlertDialog.Builder builder=new AlertDialog.Builder(MainActivity.this);
                builder.setTitle("Error........");
                builder.setMessage("Flashlight is not Available on this device...");
                builder.setPositiveButton("Ok",new DialogInterface.OnClickListener(){
                @Override
                public void onClick(DialogInterface dialog,int which){
                    dialog.dismiss();
                    finish();

                }
            });
                AlertDialog alertDialog=builder.create();
                alertDialog.show();
            }
        }

    });
}

@Override
protected void onStop() {
    super.onStop();
    if (camera!=null)
    {
        camera.release();
        camera=null;
    }
}

}