Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/jsf/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 我在安卓4.0+;但2.2中没有_Android_Multithreading - Fatal编程技术网

Android 我在安卓4.0+;但2.2中没有

Android 我在安卓4.0+;但2.2中没有,android,multithreading,Android,Multithreading,我正在用手电筒,当一个朋友试着用时,他撞车了。 他有v4.0+ 这是我的日志: 我是新手,但我读到4.0+版本中带有线程的应用程序崩溃了,所以。。我不太懂,但是,我怎么能把我所有的代码都放在没有线程的地方呢? 这是我的应用程序代码: package flash.light.app; import com.google.ads.AdRequest; import com.google.ads.AdView; import android.app.Activity; import andro

我正在用手电筒,当一个朋友试着用时,他撞车了。 他有v4.0+ 这是我的日志:

我是新手,但我读到4.0+版本中带有线程的应用程序崩溃了,所以。。我不太懂,但是,我怎么能把我所有的代码都放在没有线程的地方呢? 这是我的应用程序代码:

package flash.light.app;


import com.google.ads.AdRequest;
import com.google.ads.AdView;

import android.app.Activity;
import android.app.AlertDialog;
import android.content.ActivityNotFoundException;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.pm.ActivityInfo;
import android.content.pm.PackageManager;
import android.hardware.Camera;
import android.hardware.Camera.Parameters;
import android.media.MediaPlayer;
import android.media.MediaPlayer.OnCompletionListener;
import android.net.Uri;
import android.os.Bundle;
import android.util.Log;
import android.view.KeyEvent;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.WindowManager;
import android.widget.Button;
import android.widget.ImageButton;
import android.widget.ImageView;
import android.widget.RelativeLayout;
import android.widget.Toast;

public class MainActivity extends Activity {

public boolean onKeyDown(int keyCode, KeyEvent event) {
    if (keyCode == KeyEvent.KEYCODE_BACK) {
        exitByBackKey();

        //moveTaskToBack(false);

        return true;
    }
    return super.onKeyDown(keyCode, event);
}

protected void exitByBackKey() {

    AlertDialog alertbox = new AlertDialog.Builder(this)
    .setMessage("Do you want to Exit?")
    .setPositiveButton("Yes", new DialogInterface.OnClickListener() {

        // do something when the button is clicked
        public void onClick(DialogInterface arg0, int arg1) {

            finish();
            //close();


        }
    })

    .setNeutralButton("Rate us!", new DialogInterface.OnClickListener() {

        // do something when the button is clicked
        public void onClick(DialogInterface arg0, int arg1) {

             {
                Uri uri = Uri.parse("market://details?id=" + getPackageName());
                Intent goToMarket = new Intent(Intent.ACTION_VIEW, uri);
                try {
                    startActivity(goToMarket);
                } catch (ActivityNotFoundException e) {
                    Toast.makeText(getApplicationContext(), "Couldn´t launch Google Play", 
                            Toast.LENGTH_LONG).show();
                }
            }


        }
    })

    .setNegativeButton("No", new DialogInterface.OnClickListener() {

        // do something when the button is clicked
        public void onClick(DialogInterface arg0, int arg1) {
                       }
    })
      .show();

}

ImageButton btnSwitch;
 private Camera camera;
 private boolean isFlashOn;
 private boolean hasFlash;
 Parameters params;
 MediaPlayer mp;




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

    final AdView adView = (AdView) findViewById(R.id.adView);
    adView.loadAd(new AdRequest());

    ImageView ButtonScr = (ImageView) findViewById(R.id.imageView1);
    ButtonScr.setOnClickListener(new OnClickListener(){

        @Override
        public void onClick(View arg0) {
            Intent Screen = new Intent (MainActivity.this, ScreenActivity.class);
            startActivity(Screen);
        }});


    // flash switch button
    btnSwitch = (ImageButton) findViewById(R.id.imageButton1);


    // First check if device is supporting flashlight or not        
    hasFlash = getApplicationContext().getPackageManager()
            .hasSystemFeature(PackageManager.FEATURE_CAMERA_FLASH);

    if (!hasFlash) {
        // device doesn't support flash
        // Show alert message and close the application
        AlertDialog alert = new AlertDialog.Builder(MainActivity.this)
                .create();
        alert.setTitle("Error");
        alert.setMessage("Sorry, your device doesn't support flash light!");
        alert.setButton(AlertDialog.BUTTON_POSITIVE,"OK", new DialogInterface.OnClickListener() {
            public void onClick(DialogInterface dialog, int which) {

                Intent Screen = new Intent (MainActivity.this, ScreenActivity.class);
                startActivity(Screen);
                Toast.makeText(MainActivity.this, "You can use our Screen Light :)", 
                        Toast.LENGTH_LONG).show();

                // closing the application
               // finish();
            }
        });


        alert.show();
        return;
    }

    // get the camera
    getCamera();

    // displaying button image
    toggleButtonImage();

    //Orientación de la APP Vertical
    setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
    //Codigo para que no se apague la pantalla :D
    getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);


    // Switch button click event to toggle flash on/off
    btnSwitch.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            if (isFlashOn) {
                // turn off flash
                turnOffFlash();
             //  RelativeLayout layout = (RelativeLayout)findViewById(R.id.background);
            //  layout.setBackgroundResource(R.drawable.image6);
            } else {
                // turn on flash
                turnOnFlash();
              //  RelativeLayout layout =(RelativeLayout)findViewById(R.id.background);
                //layout.setBackgroundResource(R.drawable.slender);
            }
        }
    });
}


// Get the camera
private void getCamera() {
    if (camera == null) {
        try {
            camera = Camera.open();
            params = camera.getParameters();
        } catch (RuntimeException e) {
            Log.e("Camera Error. Failed to Open. Error: ", e.getMessage());
        }
    }
}


 // Turning On flash
private void turnOnFlash() {
    if (!isFlashOn) {
        if (camera == null || params == null) {
            return;
        }
        // play sound
     //   playSound();

        params = camera.getParameters();
        params.setFlashMode(Parameters.FLASH_MODE_TORCH);
        camera.setParameters(params);
        camera.startPreview();
        isFlashOn = true;

        // changing button/switch image
        toggleButtonImage();
    }

}


// Turning Off flash
private void turnOffFlash() {
    if (isFlashOn) {
        if (camera == null || params == null) {
            return;
        }
        // play sound
      //  playSound();

        params = camera.getParameters();
        params.setFlashMode(Parameters.FLASH_MODE_OFF);
        camera.setParameters(params);
        camera.stopPreview();
        isFlashOn = false;

        // changing button/switch image
        toggleButtonImage();
    }
}


 // Playing sound
 // will play button toggle sound on flash on / off
// private void playSound(){
 //   if(isFlashOn){
 //       mp = MediaPlayer.create(MainActivity.this, R.raw.light_switch_off);
 //   }else{
  //      mp = MediaPlayer.create(MainActivity.this, R.raw.light_switch_on);
 //   }
 //   mp.setOnCompletionListener(new OnCompletionListener() {

   //     @Override
    //    public void onCompletion(MediaPlayer mp) {
            // TODO Auto-generated method stub
     //       mp.release();
     //   }
  //  }); 
 //   mp.start();
// }

/*
 * Toggle switch button images
 * changing image states to on / off
 * */
private void toggleButtonImage(){
    if(isFlashOn){
        btnSwitch.setImageResource(R.drawable.on);

    }else{
        btnSwitch.setImageResource(R.drawable.off);

    }
}

@Override
protected void onDestroy() {
    super.onDestroy();
}

@Override
protected void onPause() {
    super.onPause();

    // on pause turn off the flash
    turnOffFlash();
}

@Override
protected void onRestart() {
    super.onRestart();
}

@Override
protected void onResume() {
    super.onResume();

    // on resume turn on the flash 
    //CREO QUE ES PARA QUE SE ENCIENDA APENAS SE ABRE.
    if (hasFlash){
        turnOnFlash();
} else { 
    Toast.makeText(MainActivity.this, "You can use our Screen Light :)", 
            Toast.LENGTH_LONG).show();
    }

}
@Override
protected void onStart() {
    super.onStart();

    // on starting the app get the camera params
   getCamera();
}

@Override
protected void onStop() {
    super.onStop();

    // on stop release the camera
    if (camera != null) {
        camera.release();
        camera = null;
    }





}

}
我该怎么做,在所有或几乎所有的设备上运行一个简单的应用程序(像这样,它是一个简单的手电筒)?
感谢并对我的英语表示歉意

您的问题出现在
getCamera()
中的
Log.e行(“Camera Error.Failed to Open.Error:,e.getMessage())

看起来
e.getMessage()
正在返回
null
,因此崩溃

您可能应该使用格式
Log.e(标记“getCamera”,e)将打印异常的堆栈跟踪(并且不会使应用程序崩溃)

替换

Log.e("Camera Error. Failed to Open. Error: ", e.getMessage());


然后找出相机不工作的原因。

如果你能发布堆栈跟踪,那会有帮助。哇,1分钟后我得到了回复lol好的,如果我没有收到错误,我会尝试,但请稍候。。我把Log.e(标签“getCamera”,e)放在哪里?在第一部分://获取摄影机getCamera()????您应该替换Log.e(“摄像头错误。无法打开。错误:”,e.getMessage());我建议的那个。然后告诉你是什么导致了你的错误omgggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggg!谢谢,谢谢!
Log.e("MainActivity", "Camera Error. Failed to Open. Error: " + e.getMessage());