Android 在程序中关闭和打开屏幕

需求:在程序中(通过事件等方式)打开和关闭屏幕

思路:一般情况下,关闭屏幕不是将屏幕真的关闭,而是将屏幕的亮度调到最低。一般情况下Android设备对屏幕可       调节的最低亮度是有一个限制的。如果你的设备真的允许完全关闭屏幕,则只能考虑为这款设备的特性,在你               写程序时是要考虑到大多数设备的。

实现:

	//启用屏幕常亮功能
	private void turnOnScreen()
	{		
		WindowManager.LayoutParams params = getWindow().getAttributes();
		params.flags |= WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON;
		params.screenBrightness = 1;
		getWindow().setAttributes(params);
	}
	//关闭 屏幕常亮功能
	private void turnOffScreen()
	{		
		WindowManager.LayoutParams params = getWindow().getAttributes();
		params.flags |= WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON;
		params.screenBrightness = 0.005f;
		getWindow().setAttributes(params);
	}


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
以下是一个Android拍照并显示在屏幕上的示例代码: XML布局文件: ```xml <FrameLayout android:id="@+id/camera_preview" android:layout_width="match_parent" android:layout_height="match_parent" /> <Button android:id="@+id/button_capture" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Capture" android:layout_gravity="center_horizontal|bottom" /> ``` MainActivity.java文件: ```java public class MainActivity extends AppCompatActivity { private Camera mCamera; private CameraPreview mPreview; private Button mCaptureButton; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // 创建一个Camera实例 mCamera = getCameraInstance(); // 创建一个预览视图并将其设置为FrameLayout的子视图 mPreview = new CameraPreview(this, mCamera); FrameLayout preview = (FrameLayout) findViewById(R.id.camera_preview); preview.addView(mPreview); // 设置拍照按钮的点击监听器 mCaptureButton = (Button) findViewById(R.id.button_capture); mCaptureButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // 拍照 mCamera.takePicture(null, null, mPicture); } }); } /** 获取Camera实例 */ private Camera getCameraInstance() { Camera c = null; try { c = Camera.open(); } catch (Exception e) { // 打开相机失败 } return c; } /** 在屏幕上显示拍摄的照片 */ private void displayCapturedPhoto(byte[] data) { // 将数据转换为位图 Bitmap bitmap = BitmapFactory.decodeByteArray(data, 0, data.length); // 创建一个ImageView并将位图设置为其图像 ImageView imageView = new ImageView(this); imageView.setImageBitmap(bitmap); // 创建一个AlertDialog并将ImageView设置为其视图 AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setView(imageView) .setPositiveButton("OK", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { // 关闭对话框 dialog.dismiss(); } }); AlertDialog dialog = builder.create(); dialog.show(); } /** 拍照后保存照片数据的回调函数 */ private Camera.PictureCallback mPicture = new Camera.PictureCallback() { @Override public void onPictureTaken(byte[] data, Camera camera) { // 显示拍摄的照片 displayCapturedPhoto(data); // 重新启动预览 camera.startPreview(); } }; @Override protected void onPause() { super.onPause(); // 释放相机资源 releaseCamera(); } /** 释放相机资源 */ private void releaseCamera() { if (mCamera != null) { mCamera.stopPreview(); mCamera.release(); mCamera = null; } } } ``` CameraPreview.java文件: ```java public class CameraPreview extends SurfaceView implements SurfaceHolder.Callback { private SurfaceHolder mHolder; private Camera mCamera; public CameraPreview(Context context, Camera camera) { super(context); mCamera = camera; // 获取SurfaceHolder并设置其回调 mHolder = getHolder(); mHolder.addCallback(this); // 预览视图为透明 mHolder.setFormat(PixelFormat.TRANSPARENT); } @Override public void surfaceCreated(SurfaceHolder holder) { // 将预览视图与相机关联起来 try { mCamera.setPreviewDisplay(holder); mCamera.startPreview(); } catch (IOException e) { // 开始相机预览失败 } } @Override public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) { // 如果预览视图发生变化,先停止预览 if (mHolder.getSurface() == null) { return; } try { mCamera.stopPreview(); } catch (Exception e) { // 无法停止相机预览 } // 启动相机预览 try { mCamera.setPreviewDisplay(mHolder); mCamera.startPreview(); } catch (Exception e) { // 开始相机预览失败 } } @Override public void surfaceDestroyed(SurfaceHolder holder) { // 释放相机资源 if (mCamera != null) { mCamera.stopPreview(); mCamera.release(); mCamera = null; } } } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ShuSheng007

亲爱的猿猿,难道你又要白嫖?

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值