① android 应用开发如何调节闪光灯亮度
这是与设备相关的,因为硬件厂商才能自行定义硬件的属性。比如htc为相机闪光灯设置一个亮度文件,通过改写这个文件的值,可以达到变更相机闪光灯的亮度,魅族应该也是这样操作的。作为安卓系统来说,没有统一的解决方案的。
参考htc闪光灯亮度root下的设置方法:
on 2.2 HTC devices you can use it by writing a string to/sys/devices/platform/flashlight.0/leds/flashlight/brightness. This controls if the LED is on and how bright it is. For maximum brightness write "128\n", half brightness write "64\n". Easy to test from adb shell:
② Android如何打开闪光灯
一、声明闪光灯的权限
<uses-permissionandroid:name="android.permission.CAMERA"/>
<uses-permissionandroid:name="android.permission.FLASHLIGHT"/>
package com.google.yang.myapplication;
import android.hardware.Camera;
import android.hardware.Camera.Parameters;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
/**
* 闪光灯的控制
*
* @author yang
*/
public class MainActivity extends AppCompatActivity {
private Button open;
private Button close;
private Button openFlicker;
private Button closeFlicker;
private Camera camera;
private Boolean isShanshuo;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
open = (Button) this.findViewById(R.id.open);
close = (Button) this.findViewById(R.id.close);
openFlicker = (Button) findViewById(R.id.openFlicker);
closeFlicker = (Button) findViewById(R.id.closeFlicker);
open.setOnClickListener(openOnClickListener);
close.setOnClickListener(closeOnClickListener);
openFlicker.setOnClickListener(openFlickerOnClickListener);
closeFlicker.setOnClickListener(closeFlickerOnClickListener);
}
/**
* 打开手电筒
*/
private OnClickListener openOnClickListener = new OnClickListener() {
@Override
public void onClick(View v) {
open();
}
};
/**
* 关闭手电筒
*/
private OnClickListener closeOnClickListener = new OnClickListener() {
@Override
public void onClick(View v) {
close();
}
};
/**
* 开启闪烁
*/
private OnClickListener openFlickerOnClickListener = new OnClickListener() {
@Override
public void onClick(View v) {
isShanshuo = true;
openFlicker.setEnabled(false);
new Thread(new Runnable() {
@Override
public void run() {
while (isShanshuo) {
open();
try {
Thread.sleep(300);
} catch (InterruptedException e) {
e.printStackTrace();
}
close();
try {
Thread.sleep(300);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}).start();
}
};
/**
* 关闭闪烁
*/
private OnClickListener closeFlickerOnClickListener = new OnClickListener() {
@Override
public void onClick(View v) {
isShanshuo = false;
openFlicker.setEnabled(true);
}
};
/**
* 打开闪光灯
*
* @return
*/
private void open() {
try {
camera = Camera.open();
camera.startPreview();
Parameters parameters = camera.getParameters();
parameters.setFlashMode(Parameters.FLASH_MODE_TORCH);
camera.setParameters(parameters);
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 关闭闪光灯
*
* @return
*/
private void close() {
try {
Parameters parameters = camera.getParameters();
parameters.setFlashMode(Camera.Parameters.FLASH_MODE_OFF);
camera.setParameters(parameters);
camera.release();
camera = null;
} catch (Exception e) {
e.printStackTrace();
}
}
}
③ 有什么方法可以使所有android手机都精确到毫秒级的控制闪光灯
我们开发程序,很多乐趣就在于控制。这是一种精神上的愉悦,无论在哪个领域,控制其他事物都是很吸引人的。那么转眼间到了2012年,Android开发也做了几年了,控制它的硬件却一直没有时间做,真是惭愧。今天得空,学习了一下,控制闪光灯大致有两种办法。下面就一一道来。 在你的项目中新建一个包Android.os,新建一个IHardwareService.aidl文件,内容如下:package Android.os; /** {@hide} */ interface IHardwareService { // obsolete flashlight support boolean getFlashlightEnabled(); void setFlashlightEnabled(boolean on); } 然后在你的程序中引入import Android.os.IHardwareService; /** * 设置闪光灯的开启和关闭 * @param isEnable * @author linc * @date 2012-3-18 */ private void setFlashlightEnabled(boolean isEnable) { try { Method method = Class.forName("Android.os.ServiceManager").getMethod("getService", String.class); IBinder binder = (IBinder) method.invoke(null, new Object[] { "hardware" }); IHardwareService localhardwareservice = IHardwareService.Stub.asInterface(binder); localhardwareservice.setFlashlightEnabled(isEnable); } catch (Exception e) { e.printStackTrace(); } } 这样就可以开启闪光灯了。private Camera camera = null; private Parameters parameters = null; //直接开启 camera = Camera.open(); parameters = camera.getParameters(); parameters.setFlashMode(Parameters.FLASH_MODE_TORCH);//开启 camera.setParameters(parameters); //直接关闭 parameters.setFlashMode(Parameters.FLASH_MODE_OFF);//关闭 camera.setParameters(parameters); camera.release(); 如果这样遇到问题的话,可以尝试用camera的preview方法:private void OpenLightOn() { if ( null == m_Camera ) { m_Camera = Camera.open(); } Camera.Parameters parameters = m_Camera.getParameters(); parameters.setFlashMode(Camera.Parameters.FLASH_MODE_TORCH); m_Camera.setParameters( parameters ); m_Camera.autoFocus( new Camera.AutoFocusCallback (){ public void onAutoFocus(boolean success, Camera camera) { } }); m_Camera.startPreview(); } private void CloseLightOff() { if ( m_Camera != null ) { m_Camera.stopPreview(); m_Camera.release(); m_Camera = null; } }
④ Android开启闪光灯的几种办法
二、用IHardwareService直接控制Android1.5以前是直接提供这个接口的,之后呢,需要我们自己来做一下。在你的项目中新建一个包Android.os,新建一个IHardwareService.aidl文件,内容如下:package Android.os;
/** {@hide} */
interface IHardwareService{// obsolete flashlight support
boolean getFlashlightEnabled();
void setFlashlightEnabled(boolean on);}然后在你的程序中引入import Android.os.IHardwareService;/*** 设置闪光灯的开启和关闭
* @param isEnable
* @author linc
IBinder binder = (IBinder) method.invoke(null, new Object[] { "hardware" });
IHardwareService localhardwareservice = IHardwareService.Stub.asInterface(binder);
localhardwareservice.setFlashlightEnabled(isEnable);}catch (Exception e){
e.printStackTrace();}}这样就可以开启闪光灯了。要使用的权限:<uses-permission Android:name="android.permission.FLASHLIGHT" />
<uses-permission Android:name="android.permission.HARDWARE_TEST" />
三、用照相机来控制闪光灯这是思维的另一个方向。Camera自带丰富的接口与Parameters,我们只管拿来使用就好了。private Camera camera = null;
private Parameters parameters = null;//直接开启camera = Camera.open();
parameters = camera.getParameters();
parameters.setFlashMode(Parameters.FLASH_MODE_TORCH);//开启
camera.setParameters(parameters);//直接关闭parameters.setFlashMode(Parameters.FLASH_MODE_OFF);//关闭
camera.setParameters(parameters);
camera.release();
如果这样遇到问题的话,可以尝试用camera的preview方法:private void OpenLightOn() {
if ( null == m_Camera ){m_Camera = Camera.open();}
Camera.Parameters parameters = m_Camera.getParameters();
parameters.setFlashMode(Camera.Parameters.FLASH_MODE_TORCH);
m_Camera.setParameters( parameters );
m_Camera.autoFocus( new Camera.AutoFocusCallback (){
public void onAutoFocus(boolean success, Camera camera) {}});m_Camera.startPreview();}
private void CloseLightOff() {
if ( m_Camera != null ){m_Camera.stopPreview();
⑤ android闪光灯
首先闪光灯可以用android.hardware.camera来控制。
1.添加权限
1 <uses-permission android:name="android.permission.FLASHLIGHT" />
2
3 <uses-permission android:name="android.permission.CAMERA"/>
4
5 <uses-feature android:name="android.hardware.camera" />
2.获得Camera对象,通过Camera.open()开启摄像头。
Camera camera = Camera.open();
3.打开闪光灯
1 public static void turnLightOn(Camera mCamera) {
2 if (mCamera == null) {
3return;
4 }
5 Parameters parameters = mCamera.getParameters();
6 if (parameters == null) {
7return;
8 }
9 List<String> flashModes = parameters.getSupportedFlashModes();
10 // Check if camera flash exists
11 if (flashModes == null) {
12 // Use the screen as a flashlight (next best thing)
13 return;
14 }
15 String flashMode = parameters.getFlashMode();
16 if (!Parameters.FLASH_MODE_TORCH.equals(flashMode)) {
17 // Turn on the flash
18 if (flashModes.contains(Parameters.FLASH_MODE_TORCH)) {
19 parameters.setFlashMode(Parameters.FLASH_MODE_TORCH);
20 mCamera.setParameters(parameters);
21 } else {
22 }
23 }
24 }
4.关闭闪光灯
1 public static void turnLightOff(Camera mCamera) {
2 if (mCamera == null) {
3 return;
4 }
5 Parameters parameters = mCamera.getParameters();
6 if (parameters == null) {
7 return;
8 }
9 List<String> flashModes = parameters.getSupportedFlashModes();
10 String flashMode = parameters.getFlashMode();
11 // Check if camera flash exists
12 if (flashModes == null) {
13 return;
14 }
15 if (!Parameters.FLASH_MODE_OFF.equals(flashMode)) {
16 // Turn off the flash
17if (flashModes.contains(Parameters.FLASH_MODE_OFF)) {
18parameters.setFlashMode(Parameters.FLASH_MODE_OFF);
19mCamera.setParameters(parameters);
20} else {
21 Log.e(TAG, "FLASH_MODE_OFF not supported");
22 }
23 }
24 }
5.关闭闪光灯后记得释放Camear对象
camera.release();
⑥ android 开发,打开打开led
前些日子 我做了个,但是不是通用的,我们是针对我们的系统定制的。
在Camera应用中,有个设置闪光灯的setFlashMode(int mode),android有个支持的 叫torch模式,但是我们的没有实现,然后我让驱动添加了个mode,这样把camera程序初始化部分抄一遍,不需要startPreview就行,然后设置flashmode为手电筒mode,就可以,手电筒就亮了。