首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Android中的Flashlight App每次都会崩溃

Android中的Flashlight App每次都会崩溃
EN

Stack Overflow用户
提问于 2015-05-27 01:18:39
回答 1查看 484关注 0票数 0

首先,我决定开发一个手电筒应用程序作为我的第一个应用程序。但当我在有闪光灯的Galaxy S5上启动它时,它会强制关闭,但在没有闪光灯的Galaxy Y上,它会打开,按钮也会正常工作。即使它显示了日志中的更改!请帮帮忙。这是我的火炬开/关代码。

代码语言:javascript
复制
private boolean isFlashOn = false;
private Camera camera;
private Button button;

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

    button = (Button) findViewById(R.id.buttonFlashlight);
    Context context = this;
    PackageManager pm = context.getPackageManager();

    camera = Camera.open();
    final Camera.Parameters p = camera.getParameters();

    button.setOnClickListener(new View.OnClickListener() {
        public void onClick(View arg0) {
            if (isFlashOn) {
                Log.i("info", "torch is turned off!");
                p.setFlashMode(Camera.Parameters.FLASH_MODE_OFF);
                camera.setParameters(p);
                isFlashOn = false;
                button.setText("Torch-ON");
            } else {
                Log.i("info", "torch is turned on!");
                p.setFlashMode(Camera.Parameters.FLASH_MODE_TORCH);
                camera.setParameters(p);
                isFlashOn = true;
                button.setText("Torch-OFF");
            }
        }
    });
}

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

这里是logcat。

代码语言:javascript
复制
05-27 10:37:20.621  30404-30404/com.example.administrator.flashlight E/AndroidRuntime﹕ FATAL EXCEPTION: main
Process: com.example.administrator.flashlight, PID: 30404
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.administrator.flashlight/com.example.administrator.flashlight.MainActivity}: java.lang.IllegalStateException: You need to use a Theme.AppCompat theme (or descendant) with this activity.
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2658)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2723)
        at android.app.ActivityThread.access$900(ActivityThread.java:172)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1422)
        at android.os.Handler.dispatchMessage(Handler.java:102)
        at android.os.Looper.loop(Looper.java:145)
        at android.app.ActivityThread.main(ActivityThread.java:5832)
        at java.lang.reflect.Method.invoke(Native Method)
        at java.lang.reflect.Method.invoke(Method.java:372)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1388)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1183)
 Caused by: java.lang.IllegalStateException: You need to use a Theme.AppCompat theme (or descendant) with this activity.
        at android.support.v7.app.ActionBarActivityDelegate.onCreate(ActionBarActivityDelegate.java:151)
        at android.support.v7.app.ActionBarActivityDelegateBase.onCreate(ActionBarActivityDelegateBase.java:138)
        at android.support.v7.app.ActionBarActivity.onCreate(ActionBarActivity.java:123)
        at com.example.administrator.flashlight.MainActivity.onCreate(MainActivity.java:30)
        at android.app.Activity.performCreate(Activity.java:6221)
        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1119)
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2611)
            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2723)
            at android.app.ActivityThread.access$900(ActivityThread.java:172)
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1422)
            at android.os.Handler.dispatchMessage(Handler.java:102)
            at android.os.Looper.loop(Looper.java:145)
            at android.app.ActivityThread.main(ActivityThread.java:5832)
            at java.lang.reflect.Method.invoke(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:372)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1388)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1183)
EN

回答 1

Stack Overflow用户

发布于 2015-05-27 01:30:22

类似这样的事情,首先使用开关打开,然后将条件设置为打开。再检查一下你的情况,(isFlashOn)这部分你在做什么。

代码语言:javascript
复制
p.setFlashMode(Camera.Parameters.FLASH_MODE_TORCH);
camera.setParameters(p);
isFlashOn = true;
button.setText("Torch-OFF");
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30464984

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档