gpt4 book ai didi

android - Camera.Parameters.FLASH_MODE_TORCH 替代 Android 2.1

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:22:19 26 4
gpt4 key购买 nike

我正在尝试编写一个需要 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com