2017-02-21 3 views
0

Je crée Flashlight Android App .. et face au problème ci-dessous .. S'il vous plaît me guider ... lorsque j'appuie sur le bouton en mode potrait La lumière du flash est allumé et quand je tourne au paysage mode d'éclairage flash se déclenche ..Ne fonctionne pas correctement Orientation de la lampe de poche Application Android

ImageButton imagebuttonon, imagebuttonoff; 
    public static Camera cmr; 
    Camera.Parameters parameters; 

    boolean isFlash = false; 
    boolean isOn = false; 

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

     imagebuttonoff = (ImageButton) findViewById(R.id.imagebuttonoff); 
     if (getApplicationContext().getPackageManager().hasSystemFeature(PackageManager.FEATURE_CAMERA_FLASH)) 

     { 

      cmr = Camera.open(); 
      parameters = cmr.getParameters(); 
      isFlash = true; 

     } 




     imagebuttonoff.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       if (isFlash) 

       { 


        //if flash light is not on 
        if (!isOn) { 

         imagebuttonoff.setImageResource(R.drawable.onswitch); parameters.setFlashMode(Camera.Parameters.FLASH_MODE_TORCH); 
         cmr.setParameters(parameters); 
         cmr.startPreview(); 
         isOn = true; 


        } else { 
         imagebuttonoff.setImageResource(R.drawable.offswitch); 
         parameters.setFlashMode(Camera.Parameters.FLASH_MODE_OFF); 
         cmr.setParameters(parameters); 
         cmr.stopPreview(); 
         isOn = false; 
        } 
       } else { 

        AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this); 
        builder.setTitle("Error"); 
        builder.setMessage("Flash light not available"); 
        builder.setPositiveButton("ok", new DialogInterface.OnClickListener() { 
         @Override 
         public void onClick(DialogInterface dialog, int which) { 
          dialog.dismiss(); 
          finish(); 
         } 
        }); 


        AlertDialog alertDialog = builder.create(); 
        alertDialog.show(); 

       } 

      } 
     }); 


    } 


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

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

      cmr.stopPreview(); 
    } 

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

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

       if (isOn) 
      cmr.startPreview(); 
    } 

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


    @Override 
    protected void onStop() { 
     super.onStop(); 
     if (cmr != null) 

      cmr.release(); 
     cmr = null; 

    } 

    @Override 
    protected void onSaveInstanceState(Bundle outState) { 
     outState.getBoolean("mode", false); 
     super.onSaveInstanceState(outState); 
      } 
    @Override 
    protected void onRestoreInstanceState(Bundle savedInstanceState) { 
       super.onRestoreInstanceState(savedInstanceState); 


    } 

} 

Répondre

1

J'ai une solution pour ce qui sera également utile pour les autres qui sont intéressés à la création d'une lampe de poche application Android, comme described on my blog.

Je viens d'entrer ces lignes dans le fichier Manifest.xml.

<activity android:name=".MainActivity" android:configChanges="orientation|screenSize"> 
+3

Soyez conscient de ne pas trop lier votre blog, c'est une pratique qui est mal vue. Bienvenue à bord: D –

+2

N'oubliez pas de dire que quelque chose que vous liez est la propriété de vous si c'est le cas. Si ce n'est pas le cas, c'est du spam. –

+3

Veuillez noter que si vous voulez promouvoir votre propre produit/blog ** vous devez divulguer votre affiliation **, sinon votre réponse pourrait être signalée comme spam. S'il vous plaît lire [Comment ne pas être un spammeur] (https://stackoverflow.com/help/promotion) – DavidPostill