草庐IT

android - Camera.Parameters.FLASH_MODE_TORCH 替代 Android 2.1

coder 2023-11-25 原文

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

有关android - Camera.Parameters.FLASH_MODE_TORCH 替代 Android 2.1的更多相关文章

  1. ruby - 如何为 emacs 安装 ruby​​-mode - 2

    我刚刚为fedora安装了emacs。我想用emacs编写ruby。为ruby​​提供代码提示、代码完成类型功能所需的工具、扩展是什么? 最佳答案 ruby-mode已经包含在Emacs23之后的版本中。不过,它也可以通过ELPA获得。您可能感兴趣的其他一些事情是集成RVM、feature-mode(Cucumber)、rspec-mode、ruby-electric、inf-ruby、rinari(用于Rails)等。这是我当前用于Ruby开发的Emacs配置:https://github.com/citizen428/emacs

  2. ruby-on-rails - 在 Flash 警报 Rails 3 中显示错误消息 - 2

    如果我在模型中设置验证消息validates:name,:presence=>{:message=>'Thenamecantbeblank.'}我如何让该消息显示在闪光警报中,这是我迄今为止尝试过的方法defcreate@message=Message.new(params[:message])if@message.valid?ContactMailer.send_mail(@message).deliverredirect_to(root_path,:notice=>"Thanksforyourmessage,Iwillbeintouchsoon")elseflash[:error]

  3. 安卓apk修改(Android反编译apk) - 2

    最近因为项目需要,需要将Android手机系统自带的某个系统软件反编译并更改里面某个资源,并重新打包,签名生成新的自定义的apk,下面我来介绍一下我的实现过程。APK修改,分为以下几步:反编译解包,修改,重打包,修改签名等步骤。安卓apk修改准备工作1.系统配置好JavaJDK环境变量2.需要root权限的手机(针对系统自带apk,其他软件免root)3.Auto-Sign签名工具4.apktool工具安卓apk修改开始反编译本文拿Android系统里面的Settings.apk做demo,具体如何将apk获取出来在此就不过多介绍了,直接进入主题:按键win+R输入cmd,打开命令窗口,并将路

  4. jquery - Rails 如何创建 Jquery flash 消息而不是默认的 Rails 消息 - 2

    我想在页面顶部创建自定义Jquery消息而不是标准RailsFlash消息。我想在我的投票底部附近创建一条即时消息。我的Controller:defvote_up@post=Post.find(params[:id])current_user.up_vote(@post)flash[:message]='Thanksforvoting!'redirect_to(root_path,:notice=>'Takforditindlæg,deternuonline!')rescueMakeVoteable::Exceptions::AlreadyVotedErrorflash[:error]

  5. ruby-on-rails - rails : Pass Parameters to New Controller during 'redirect_to' - 2

    我正在使用RyanBates的RailsCastonWickedWizardForms创建一个多步骤表单。我没有定义current_user方法(不使用身份验证gem)-因此,我试图在redirect_to期间传递user.id参数-不幸的是,我似乎无法让它工作。任何帮助表示赞赏!我的用户Controller创建方法defcreate@user=User.new(params[:user])respond_todo|format|if@user.saveformat.html{redirect_tocontroller:'user_steps',id:'user.id'}#format

  6. ruby-on-rails - rails 教程 : Putting flash messages in partial yields error "undefined method ` each' for nil:NilClass"? - 2

    这个问题在这里已经有了答案:关闭10年前。PossibleDuplicate:FlashMessagesinPartials(Rails3)我正在做MichaelHartl的Railstutorial和listing7.26将flash消息添加到应用程序布局:...">...这很好用。但是,我试图通过在我的部分文件夹中创建一个_flash.html.erb来清理这段代码...">-->...并且比使用......在我的应用程序布局中,我的所有Rspec测试开始失败,每个测试都显示以下消息:Failure/Error:before{visitsignup_path}ActionView:

  7. ruby-on-rails - Rails/Bootstrap - Flash 通知 :success is now red and not green? - 2

    我一直试图在这里寻找答案,但我找不到任何有用的东西。我已经对我的Rails应用程序实现了:success和:dangerflash通知。它工作得很好,即:success是绿色的,:danger是红色的,有一个关闭按钮等等,但是自从添加了一些邮件文件后,我的:success现在显示为红色?application.html.erb摘录:×contact_mailer.rbclassContactMailercontacts_controller.rbclassContactsController还有,contact_email.html.erbNewMessagefromHoo

  8. ruby-on-rails - 带有 redirect_to 的 Flash 通知在 rails 中被破坏 - 2

    我已更新到Rails2.3.10、Rack1.2.1,现在我的所有即时消息都没有显示。我发现在重定向期间,通知是这样传递的redirect_to(@user,:notice=>"Sorrytherewasanerror")在我看来闪存哈希是空的!map:ActionController::Flash::FlashHash{}但是您可以在Controller中看到该消息。是什么原因?session{:home_zip=>"94108",:session_id=>"xxx",:flash=>{:notice=>"Sorrytherewasanerror"},:user_credential

  9. MicroBlaze在纯FPGA下 Xilinx SDK固化程序到外部SPI FLASH - 2

    外部SPIFLASH:MicronN25Q128A13ESE40G(128Mbit(16MByte))FPGA:XC7A100T CPU:Microblaze第一种情况:Microblaze在简单的应用,比如运行LED,IIC,SPI,UART之类的低俗接口驱动,或做一些简单的辅助型工作时,一般生成的applicationelf文件都不大,在10几KB或者几十,百几KB,此时使用FPGA内部的BRAM资源已经足够。XC7A100T本身就有600几KB的BRAM资源。这种情况下直接将硬件流文件和elf文件合并为download.bit文件,在直接烧录到外部SPIFLAH即可。1.Xilinx--

  10. ruby-on-rails - Rails Strong Parameters - 允许数组中的深层嵌套哈希 - 2

    如何允许/白名单具有非常不规则(无法声明)结构的深层嵌套哈希。例子:{"widgets"=>[{"id"=>75432,"conversion_goal_id"=>1331,"options"=>{"form_settings"=>{"formbuilder-bg-color"=>"rgba(255,255,255,0)","font-size"=>"14px","form-field-depth"=>"42px"},"linkedWidget"=>""},"type"=>"formbuilder-widget"},{"id"=>75433,"conversion_goal_id"=>

随机推荐