我使用以下代码打开和关闭LED手电筒:
public Flashlight(SurfaceView preview, Context context){
this.preview = preview;
this.context = context;
mHolder = preview.getHolder(); //mHolder is surfaceHolder
mHolder.addCallback(this);
try {
mCamera = Camera.open();
params = mCamera.getParameters();
mCamera.setPreviewDisplay(mHolder);
mCamera.startPreview();
//AUTOFOCUS LASER FIX ON LG G3
List<String> focusModes = params.getSupportedFocusModes();
if (focusModes.contains(params.FOCUS_MODE_INFINITY)) {
params.setFocusMode(params.FOCUS_MODE_INFINITY);
}
else{
if (focusModes.contains(params.FOCUS_MODE_FIXED))
params.setFocusMode(params.FOCUS_MODE_FIXED);
}
mCamera.setParameters(params);
cameraOpened = true;
}catch (Exception e){
cameraOpened = false;
e.printStackTrace();
}
}
private void turnOnFlashlight(){
flashlightOn = true;
params.setFlashMode(Camera.Parameters.FLASH_MODE_TORCH);
mCamera.setParameters(params);
}
private void turnOffFlashlight(){
flashlightOn = false;
params.setFlashMode(Camera.Parameters.FLASH_MODE_OFF);
mCamera.setParameters(params);
} …Run Code Online (Sandbox Code Playgroud) 我正在编写一个应用程序,将闪光模式设置为火炬.我一直在我的Droid X上测试应用程序,并且LED灯没有亮起.我在Droid Incredible上尝试过,它运行良好.我无法弄清楚问题是什么.这是我打开火炬模式的代码的一部分.
Camera mCamera = Camera.open();
Camera.Parameters params = mCamera.getParameters();
if(params.getFlashMode() != null){
params.setFlashMode(Camera.Parameters.FLASH_MODE_TORCH);
}
mCamera.setParameters(params);
Run Code Online (Sandbox Code Playgroud)
我添加了mCamera.startPreview(); 因为我读过这应该有所作为,但事实并非如此.我还列出了可用的闪光模式并将它们显示在屏幕上,以确保我的Droid X确实具有火炬模式,并且它在列表中.我甚至用我在网上找到的代码创建了一个新的应用程序,用一个按钮打开和关闭LED闪光灯.再一次,它在Droid Incredible上工作得很好,但不是Droid X.我有什么东西可以让它在Droid X上运行,或者它可能是Gingerbread的东西吗?Droid X正在运行Gingerbread,而Droid Incredible正在运行FroYo.
我的应用程序使用 开启摄像头 LED FLASH_MODE_TORCH,但现在有人说这FLASH_MODE_TORCH在某些三星设备上无法正常工作。
那么我应该FLASH_MODE_ON用于所有设备吗?(尤其是三星设备)
我正在使用Camera 2 API开发一个手电筒应用程序.一切都很好.
在开发应用程序时,我遇到了很多教程甚至是堆栈溢出的帖子,其中人们使用了"android.permission.FLASHLIGHT"权限.
我试图在官方文档中搜索"android.permission.FLASHLIGHT"(在developer.android.com中),但找不到任何内容.
我只知道什么是许可,是否需要打开火炬模式.如果是,为什么没有官方文档,为什么我的应用程序(目标API> = 21)在没有此权限的情况下工作?
注意:我在Android 5,6,7,8中测试了我的应用程序,它运行正常,除了诺基亚6和小米redimi note.
这是我在这里的第一个问题,因为我在开发我的第一个iOS应用时遇到了问题.它是成千上万的手电筒应用程序之一,但我正在努力为它添加尽可能多的功能.其中一个是在应用程序进入后台或终止时保存应用程序的状态.转到前台(iOS 4或更高版本)或重新启动后,我正在从文件加载设置并重新应用它们.其中一个设置显然是AVCaptureDevice.torchMode.但是,我遇到了这个问题.我正在该applicationDidBecomeActive方法中重新应用这些设置.这一切似乎都有效,但是当我快速点击主页按钮然后重新启动应用程序时,应用程序将执行以下操作(我将applicationDidBecomeActive方法延迟观察它):
1.显示黑屏(加载)
2.执行applicationDidBecomeActive并打开LED(我把延迟放在这里)
3.显示我的当前UIViewController和同时关闭LED
只有在它被发送后立即从后台调用应用程序后才会发生.我知道这不是现实的用例场景,但我喜欢认为错误常常"堆积",并且由于这种(可能)糟糕的设计,我将来可能会遇到其他问题.我绝对相信这不是我的代码关闭LED,因为NSLog每当我的代码修改AVCaptureDevice.torchMode属性.所以,确切地说,我的问题是:
什么方法被调用applicationDidBecomeActive,可能与之相关,可能UIViewController会关闭我的火炬?是否有任何可能的解决方案或解决方案?
我有兴趣制作一个完全黑暗的网页效果(在黑暗中,我的意思是黑暗如夜,根本没有灯光),并给鼠标光标一个灯光效果来照亮周围。
我应该用什么来达到这样的效果?我尝试在 CSS 和网络上寻找答案,但没有找到类似的内容。
我唯一发现的是这个WordPress 插件,但它已修复并且无法自定义或使用。
我正在尝试使用Camera2创建一个手电筒.我收到了错误.当我试图打开或关闭手电筒时,我收到错误消息:
android.hardware.camera2.CameraAccessExeption:相机设备遇到严重错误.
主要活动
package com.nettport.lommelykt;
import android.Manifest;
import android.content.pm.PackageManager;
import android.support.v4.app.ActivityCompat;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;
import android.widget.ToggleButton;
import android.content.Context;
import android.graphics.SurfaceTexture;
import android.hardware.camera2.CameraAccessException;
import android.hardware.camera2.CameraCaptureSession;
import android.hardware.camera2.CameraCharacteristics;
import android.hardware.camera2.CameraDevice;
import android.hardware.camera2.CameraManager;
import android.hardware.camera2.CameraMetadata;
import android.hardware.camera2.CaptureRequest;
import android.util.Size;
import android.view.Surface;
import java.util.ArrayList;
import java.util.List;
public class MainActivity extends AppCompatActivity {
CameraManager cameraManager;
CameraCharacteristics cameraCharacteristics;
CameraDevice mCameraDevice;
CameraCaptureSession mSession;
CaptureRequest.Builder mBuilder;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// Initialize camera
initCamera();
// …Run Code Online (Sandbox Code Playgroud) 我正在尝试开发一个应用程序,以便在切换时点击手电筒.我尝试了我在网络上找到的所有方法,但在我的nexus 5中没有成功.唯一有效的应用程序是cyanogenmod火炬,但即使我接受了该代码并在应用程序中编写它,它会创建一个通知,如果点击它打开cyanogenmod火炬应用程序,而不是我的!这是个问题!!是否有可能有一个简单的代码也适用于nexus 5?
public void turnOffFlashLight() {
try {
if (getPackageManager().hasSystemFeature(PackageManager.FEATURE_CAMERA_FLASH)) {
cam.stopPreview();
cam.release();
cam = null;
}
} catch (Exception e) {
e.printStackTrace();
Toast.makeText(getBaseContext(), "Exception throws in turning off flashlight.", Toast.LENGTH_SHORT).show();
}
}
public void turnOnFlashLight() {
try {
if (getPackageManager().hasSystemFeature(PackageManager.FEATURE_CAMERA_FLASH)) {
cam = Camera.open();
cam.setPreviewTexture(new SurfaceTexture(0));
Parameters p = cam.getParameters();
p.setFlashMode(Parameters.FLASH_MODE_TORCH);
cam.setParameters(p);
cam.startPreview();
}
} catch (Exception e) {
e.printStackTrace();
Toast.makeText(getBaseContext(), "Exception throws in turning on flashlight.", Toast.LENGTH_SHORT).show();
}
}
Run Code Online (Sandbox Code Playgroud)
编辑:logcat
04-09 21:52:21.967: E/AndroidRuntime(5346): FATAL EXCEPTION: main
04-09 …Run Code Online (Sandbox Code Playgroud) 我使用插件 com.phonegap.plugins.barcodescanner 创建应用程序扫描二维码
但我无法在扫描时打开设备中的 LED 灯
如何解决问题
谢谢大家帮忙!
即使我切换到下一个活动或下一个应用程序,我怎样才能在后台保持手电筒打开。当我锁定屏幕时,我的手电筒也会自动关闭,我希望即使屏幕锁定也让我的闪光灯发光。
这是我当前的代码:
private Camera camera;
private boolean isFlashOn;
private boolean hasFlash;
Camera.Parameters params;
MediaPlayer mp;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_savedform);
toolbar= (Toolbar) findViewById(R.id.app_bar);
setSupportActionBar(toolbar);
getSupportActionBar().setHomeButtonEnabled(true);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
btnSwitch = (ImageButton) findViewById(R.id.btnSwitch);
// First check if device is supporting flashlight or not
hasFlash = getApplicationContext().getPackageManager()
.hasSystemFeature(PackageManager.FEATURE_CAMERA_FLASH);
if (!hasFlash) {
// device doesn't support flash
// Show alert message and close the application
AlertDialog alert = new AlertDialog.Builder(SavedForm.this)
.create();
alert.setTitle("Error");
alert.setMessage("Sorry, your device doesn't support flash light!");
alert.setButton("OK", new DialogInterface.OnClickListener() …Run Code Online (Sandbox Code Playgroud) 我的flashligh应用程序完美运行.出于某种原因,每次我快速点击手电筒按钮,应用程序只是冻结,并没有做任何事情.当我调用AVCaptureSession stopRunning时,它似乎冻结了.下面是我的切换手电筒方法的代码.我也希望这种方法最终被称为频闪功能.
- (void)toggleFlashlight{
if (isTorchOn) {
// Start session configuration
[session beginConfiguration];
[device lockForConfiguration:nil];
// Set torch to on
[device setTorchMode:AVCaptureTorchModeOn];
[device unlockForConfiguration];
[session commitConfiguration];
[session startRunning];
}
else {
[session stopRunning];
[session release];
session = nil;
session = [[AVCaptureSession alloc] init];
// Create device input and add to current session
AVCaptureDeviceInput *input = [AVCaptureDeviceInput deviceInputWithDevice:device error: nil];
[session addInput:input];
// Create video output and add to current session
AVCaptureVideoDataOutput *output = [[AVCaptureVideoDataOutput alloc] init];
[session addOutput:output];
[output release]; …Run Code Online (Sandbox Code Playgroud) 您需要打开手机上的 LED。我写了一个简单的应用程序。LED 应在应用程序启动时亮起。该代码与 Stackoverflow 应用程序代码上的解决方案相匹配:
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()
}
}
Run Code Online (Sandbox Code Playgroud)
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"/>
Run Code Online (Sandbox Code Playgroud)
允许访问手机上的相机。不起作用。有想法吗?
flashlight ×12
android ×8
camera ×1
cordova ×1
css ×1
effects ×1
ios ×1
ios4 ×1
iphone ×1
java ×1
kotlin ×1
light ×1
lighting ×1
multitasking ×1
nexus-5 ×1
objective-c ×1
sony-xperia ×1
surfaceview ×1