Kotlin 上的 Android 手电筒

Posted

技术标签:

【中文标题】Kotlin 上的 Android 手电筒【英文标题】:Flashlight for Android on Kotlin 【发布时间】:2020-11-25 06:26:33 【问题描述】:

您需要打开手机上的 LED。我写了一个简单的应用程序。应用程序启动时 LED 应亮起。该代码与 *** 上的解决方案相匹配 申请代码:

package com.example.flash

import android.hardware.Camera
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle

class MainActivity : AppCompatActivity() 

 override fun onCreate(savedInstanceState: Bundle?) 
     super.onCreate(savedInstanceState)
     setContentView(R.layout.activity_main)
     var cam = Camera.open()
     var p = cam.parameters
     p.flashMode = Camera.Parameters.FLASH_MODE_TORCH
     cam.parameters = p
     cam.startPreview()
 
 

AndroidManifest.xml:

    <?xml version="1.0" encoding="utf-8"?>
    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.kgskassa">
       <uses-permission android:name="android.permission.INTERNET" />
       <uses-permission android:name="android.permission.CAMERA" />
       <uses-permission android:name="android.permission.FLASHLIGHT"/>
       <uses-feature android:name="android.hardware.camera" />
       <uses-feature android:name="android.hardware.camera.autofocus"/>

允许访问手机上的摄像头。 不工作。想法?

【问题讨论】:

你说它“不起作用”。 - 会发生什么? 您还需要添加相机运行时权限 ***.com/questions/42275906/… 当用户授予权限时,然后使用您的代码打开 LEF 【参考方案1】:
package com.example.flash

import android.content.Context
import android.hardware.camera2.CameraAccessException
import android.hardware.camera2.CameraManager
import android.os.Bundle
import androidx.appcompat.app.AppCompatActivity

class MainActivity : AppCompatActivity() 
    var flashLightStatus: Boolean = false

    override fun onCreate(savedInstanceState: Bundle?) 
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        openFlashLight()
    

    private fun openFlashLight() 
        val cameraManager = getSystemService(Context.CAMERA_SERVICE) as CameraManager
        val cameraId = cameraManager.cameraIdList[0]
        if (!flashLightStatus) 
            try 
                cameraManager.setTorchMode(cameraId, true)
                flashLightStatus = true

             catch (e: CameraAccessException) 
            
         else 
            try 
                cameraManager.setTorchMode(cameraId, false)
                flashLightStatus = false
             catch (e: CameraAccessException) 
            
        

    

【讨论】:

以上是关于Kotlin 上的 Android 手电筒的主要内容,如果未能解决你的问题,请参考以下文章

Android如何知道手电筒是不是打开

Android开启手电筒功能(完美适配Android4x,5x,6x)

如何检查android设备支持手电筒的`react-native`?

Android : 如何使用 WEBRTC android io.pristine.libjingle:11139 打开手电筒

手电筒片段 Android Studio

Android Studio:关闭时手电筒崩溃