安卓手机手电筒不见了?

前言:我把我的安卓手机恢复出厂设置以后,手电筒这个软件莫名消失了,想要从应用市场下载一个使用,发现都有广告,那么只好手写一个了。

点击下方链接下载手电筒app:

https://download.csdn.net/download/sinat_30949835/12630516

源码分享:

MainActivity.java

package com.lnkjly.shoudiantong;

import androidx.annotation.NonNull;
import androidx.annotation.RequiresApi;
import androidx.appcompat.app.AppCompatActivity;

import android.annotation.TargetApi;
import android.content.Context;
import android.graphics.Camera;
import android.hardware.camera2.CameraAccessException;
import android.hardware.camera2.CameraCharacteristics;
import android.hardware.camera2.CameraManager;
import android.os.Build;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;

public class MainActivity extends AppCompatActivity {

    private Button button;
    private CameraManager mCameraManager;
    private boolean isFlashLightOn = false;

    @TargetApi(Build.VERSION_CODES.M)
    @RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);


        button = (Button) findViewById(R.id.btn_sdt);
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                toggleLight(!isFlashLightOn);
            }
        });
        //获取CameraManager
        if(mCameraManager == null){
            mCameraManager = (CameraManager) getSystemService(Context.CAMERA_SERVICE);
        }
        mCameraManager.registerTorchCallback(mTorchCallback, null);
    }

    @TargetApi(Build.VERSION_CODES.M)
    @RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
    private CameraManager.TorchCallback mTorchCallback = new CameraManager.TorchCallback() {
        @Override
        public void onTorchModeChanged(@NonNull String cameraId, boolean enabled) {
            super.onTorchModeChanged(cameraId, enabled);
//            Log.Loge(TAG, "onTorchModeChanged cameraId=" + cameraId + ";enabled=" + enabled);
            isFlashLightOn = enabled;
//            ivFlashlight.setIcon(enabled ? MaterialDrawableBuilder.IconValue.FLASHLIGHT : MaterialDrawableBuilder.IconValue.FLASHLIGHT_OFF);
        }
    };

    @TargetApi(Build.VERSION_CODES.M)
    @RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
    public void toggleLight(boolean OPEN) {
        try {
            //获取当前手机所有摄像头设备ID
            String[] ids = mCameraManager.getCameraIdList();
            for (String id : ids) {
                CameraCharacteristics c = mCameraManager.getCameraCharacteristics(id);
                //查询该摄像头组件是否包含闪光灯
                Boolean flashAvailable = c.get(CameraCharacteristics.FLASH_INFO_AVAILABLE);

                /*
                 * 获取相机面对的方向
                 * CameraCharacteristics.LENS_FACING_FRONT 前置摄像头
                 * CameraCharacteristics.LENS_FACING_BACK 后只摄像头
                 * CameraCharacteristics.LENS_FACING_EXTERNAL 外部的摄像头
                 */
                Integer lensFacing = c.get(CameraCharacteristics.LENS_FACING);
                if (flashAvailable != null && flashAvailable
                        && lensFacing != null && lensFacing == CameraCharacteristics.LENS_FACING_BACK) {
                    //打开或关闭手电筒
                    mCameraManager.setTorchMode(id, OPEN);
                    break;
                }
            }
        } catch (CameraAccessException e) {
            e.printStackTrace();
        }
    }

    @RequiresApi(api = Build.VERSION_CODES.M)
    @Override
    protected void onDestroy() {
        super.onDestroy();
        if(mCameraManager != null && mTorchCallback != null){
            mCameraManager.unregisterTorchCallback(mTorchCallback);
        }
    }
}

app/src/main/res/layout/activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        android:gravity="center"
        >
        <View
            android:layout_weight="1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            />
        <Button
            android:id="@+id/btn_sdt"
            android:layout_width="300dp"
            android:layout_height="300dp"
            android:text="手电筒"
            android:layout_marginBottom="50dp"
            />
    </LinearLayout>

</LinearLayout>

build.gradle

apply plugin: 'com.android.application'

android {
    compileSdkVersion 29
    defaultConfig {
        applicationId "com.lnkjly.shoudiantong"
        minSdkVersion 19
        targetSdkVersion 29
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation 'androidx.appcompat:appcompat:1.1.0'
    implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'androidx.test:runner:1.2.0'
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
}

logo的话随便找一个就可以了。

通过以上代码就可以完成最简单的一个手电筒应用哦。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Android手机助手可以通过串口通信与其他设备进行数据传输和交互。串口通信是一种使用串行通信口(串口)进行数据传输的方式,能够在Android手机助手和其他设备之间建立可靠的通信连接。 在进行串口通信时,首先需要在Android手机助手上设置串口通信的参数,包括波特率、数据位、停止位和奇偶校验等。这些参数需要与目标设备进行匹配,以确保数据能够正确地传输。 Android手机助手可以通过使用串口通信库,如UsbSerial或SerialPort等,在Android系统上实现串口通信功能。通过这些库,可以轻松地读取和写入串口数据,并对数据进行解析和处理。 使用Android手机助手进行串口通信的一个常见应用是与嵌入式设备进行数据交互。例如,可以通过串口接口将Android手机助手连接到嵌入式设备上,将数据从嵌入式设备读取到Android手机助手上,或者将Android手机助手上的数据发送到嵌入式设备上进行控制。 此外,Android手机助手还可以通过串口通信与其他外部设备进行连接,如传感器、电子设备等。通过串口通信,Android手机助手可以接收和发送与这些设备相关的数据,实现数据的采集、监测和控制等功能。 总之,Android手机助手可以通过串口通信与其他设备建立可靠的通信连接,在数据传输和交互方面提供便利。这种方式能够广泛应用于嵌入式设备的交互、数据采集和控制等场景中。 ### 回答2: Android手机助手可以通过串口通信实现与外部设备的数据交互。串口通信是一种通过串行接口进行数据传输的方式,在Android设备上使用串口通信需要借助于USB转串口适配器或者控制板的串口接口。 首先,需要在Android手机助手的应用中添加串口通信功能的相关代码。可以使用Java的串口通信库,如android-serialport-api,该库提供了操作串口的相关函数。 其次,需要通过USB转串口适配器将Android手机与外部设备连接起来。通过USB线将适配器插入到Android手机的USB接口上,并将外部设备的串口连接到适配器的串口接口上。 然后,在Android手机助手应用中打开串口,设置相关参数,如波特率、数据位、停止位、校验位等。可以使用SerialPort类中的open()函数来打开串口。 接着,可以使用read()函数读取串口接收的数据,使用write()函数将数据发送到外部设备。可以使用InputStream和OutputStream进行数据的读写。 最后,在不需要串口通信的时候,记得调用SerialPort类中的close()函数关闭串口。 需要注意的是,串口通信需要进行相关的硬件和软件配置,不同的外部设备可能有不同的串口通信协议和命令格式,需要根据具体的需求进行相应的开发和调试工作。 总结起来,Android手机助手可以通过串口通信与外部设备实现数据交互,通过添加相关的代码和使用串口通信库,配置串口参数,读写数据来完成串口通信的功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值