- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在尝试编写一个需要 LED 闪光灯进入手电筒模式的应用程序。问题是,Android 2.1 不支持这种模式,因此我还不能支持这个平台。不会有问题,但我正在为我的未婚夫写它,而她的 Epic 4G 现在只有 2.1。我发现一些代码示例使用了一些未记录的 API 调用,因此可以在摩托罗拉 Droid 等设备上运行,但它们不能在 Epic 上运行。有没有人对在哪里寻找可以帮助我完成这项工作的代码提出一些建议?
最佳答案
我发现手电筒模式通常在 2.1 上运行良好,但我在 Samsung Epic 上遇到了同样的问题并发现了一个破解方法。
查看在 Samsung Epic 上运行时 Camera.getParameters() 返回的参数,我注意到它声称支持的闪光模式是:flash-mode-values=off,on,auto;
torch-mode 未列出,暗示它不受支持。
但是,我发现该模型仍会接受该模式并会打开 LED!坏消息是,当稍后将闪光模式设置回自动或关闭时,LED 仍然亮着!在您调用 Camera.release() 之前它不会关闭。
我猜这就是为什么三星不将其包含在支持列表中的原因!?!
所以...我用来在 CameraHelper 类中切换手电筒的方法是...
/***
* Attempts to set camera flash torch/flashlight mode on/off
* @param isOn true = on, false = off
* @return boolean whether or not we were able to set it
*/
public boolean setFlashlight(boolean isOn)
{
if (mCamera == null)
{
return false;
}
Camera.Parameters params = mCamera.getParameters();
String value;
if (isOn) // we are being ask to turn it on
{
value = Camera.Parameters.FLASH_MODE_TORCH;
}
else // we are being asked to turn it off
{
value = Camera.Parameters.FLASH_MODE_AUTO;
}
try{
params.setFlashMode(value);
mCamera.setParameters(params);
String nowMode = mCamera.getParameters().getFlashMode();
if (isOn && nowMode.equals(Camera.Parameters.FLASH_MODE_TORCH))
{
return true;
}
if (! isOn && nowMode.equals(Camera.Parameters.FLASH_MODE_AUTO))
{
return true;
}
return false;
}
catch (Exception ex)
{
MyLog.e(mLOG_TAG, this.getClass().getSimpleName() + " error setting flash mode to: "+ value + " " + ex.toString());
}
}
使用它的 Activity 如下调用它...
private void toggleFlashLight()
{
mIsFlashlightOn = ! mIsFlashlightOn;
/**
* hack to fix an issue where the Samsung Galaxy will turn torch on,
* even though it says it doesnt support torch mode,
* but then will NOT turn it off via this param.
*/
if (! mIsFlashlightOn && Build.MANUFACTURER.equalsIgnoreCase("Samsung"))
{
this.releaseCameraResources();
this.initCamera();
}
else
{
boolean result = mCamHelper.setFlashlight(mIsFlashlightOn);
if (! result)
{
alertFlashlightNotSupported();
}
}
}
让这项工作在 releaseCameraResources() 中起作用的神奇之处在于它调用 Camera.release()....然后我必须为三星设备重新初始化我所有的相机。
不漂亮,但似乎对很多用户有用。
请注意,我确实有一份关于手电筒模式在 Nexus one 上使用此代码根本不起作用的报告,但我已经能够深入研究它。它绝对适用于 HTC EVO 和三星 Epic。
希望这对您有所帮助。
关于android - Camera.Parameters.FLASH_MODE_TORCH 替代 Android 2.1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3878294/
当手机不支持 Camera.Parameters 中的 FLASH_MODE_TORCH 时,是否有任何选项可以在不确定的时间内打开闪光灯? 我知道这是可能的,因为我的手机(Samsung Galax
我的应用使用 FLASH_MODE_TORCH 打开相机 LED,但现在有人说 FLASH_MODE_TORCH 在某些三星设备上无法正常工作。 那么我应该为所有设备使用FLASH_MODE_ON吗?
我正在尝试编写一个需要 LED 闪光灯进入手电筒模式的应用程序。问题是,Android 2.1 不支持这种模式,因此我还不能支持这个平台。不会有问题,但我正在为我的未婚夫写它,而她的 Epic 4G
我正在编写一个将闪光灯模式设置为手电筒的应用程序。我一直在我的 Droid X 上测试应用程序,但 LED 灯不亮。我在 Droid Incredible 上试过,效果很好。我不知道是什么问题。这是我
我是一名优秀的程序员,十分优秀!