【问题标题】:flashlight not working on some devices手电筒在某些设备上不起作用
【发布时间】:2015-04-25 09:42:44
【问题描述】:

我目前制作了一个简单的手电筒应用程序,但它不适用于某些带有摄像头 LED 的设备,但在其他设备上却可以正常工作。谁能告诉我我做错了什么?

这是我的主要活动:

public class MainActivity extends Activity {

    private Camera camera;
    private Camera.Parameters parameters;
    private ImageButton flashLightButton;
    boolean isFlashLightOn = false;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

         AdView mAdView = (AdView) findViewById(R.id.adView);
            AdRequest adRequest = new AdRequest.Builder().build();
            mAdView.loadAd(adRequest);


        flashLightButton = (ImageButton)findViewById(R.id.flashlight_button);
        flashLightButton.setOnClickListener(new FlashOnOffListener());

        if (isFlashSupported()) {
            camera = Camera.open();
            parameters = camera.getParameters();
        } else {
            showNoFlashAlert();
        }
    }



    private class FlashOnOffListener implements View.OnClickListener{

        @Override
        public void onClick(View v) {
            if(isFlashLightOn){
                flashLightButton.setImageResource(R.drawable.flashlight_off);
                parameters.setFlashMode(Parameters.FLASH_MODE_OFF);
                camera.setParameters(parameters);
                camera.stopPreview();
                isFlashLightOn = false;
            }else{
                flashLightButton.setImageResource(R.drawable.flashlight_on);
                parameters.setFlashMode(Parameters.FLASH_MODE_TORCH);
                camera.setParameters(parameters);
                camera.startPreview();
                isFlashLightOn = true;
            }

        }

    }

    private void showNoFlashAlert() {
        new AlertDialog.Builder(this)
                .setMessage("Your device hardware does not support flashlight!")
                .setIcon(android.R.drawable.ic_dialog_alert).setTitle("Error")
                .setPositiveButton("Ok", new OnClickListener() {

                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        dialog.dismiss();
                        finish();
                    }
                }).show();
    }

    private boolean isFlashSupported() {
        PackageManager pm = getPackageManager();
        return pm.hasSystemFeature(PackageManager.FEATURE_CAMERA_FLASH);
    }

    @Override
    protected void onDestroy() {
        if(camera != null){
            camera.stopPreview();
            camera.release();
            camera = null;
        }
        super.onDestroy();
    }
}

【问题讨论】:

  • 你能分享一下不起作用的代码吗?
  • 另外,也许可以举一些它可以工作的设备和一些不能工作的设备的例子?
  • 我已经分享了代码看看这个
  • 它不适用于 karbonn、samusung、lava、micromax、gionee 和其他具有不同 android 版本的设备。

标签: android camera led flashlight


【解决方案1】:

您遇到的问题与某些制造商如何使用不同的方式将相机 LED 置于手电筒模式以及一些运行过时版本的 android 的旧设备如何启用 LED 有关。三星和 HTC 通常会遇到问题,因此解决此问题的最简单方法是使用 switch-case 语句为不同类型的设备打开/关闭手电筒。这个问题已经被问过好几次了,所以解决这个问题的一个好方法是在这里搜索不同制造商和安卓版本打开手电筒的不同方式。然后编写一些逻辑来获取设备的属性,使用 switch-case 或 if-else 测试它们,并为每个供应商做你应该做的事情。至少,这是确保完全兼容的最佳方式。

【讨论】:

  • 你能告诉我我该怎么做#shahraiz。因为我太初学者了,对android了解不多
猜你喜欢
  • 2015-05-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多