2013-11-29 2 views
0

* Привет, у меня есть приложение для фонарика, но я не могу запустить его, idk, почему, я думаю, что это OnClickListener в фоновом режиме. Возможно, это неправильно, или idk, я новичок, извините D: Logcat: enter link description here (Ничего важного, я думаю) У меня есть другой FlashLight и фон OnClickListener - разница между этими приложениями .. Но .. Как я могу добавить, что, когда я нажимаю кнопку LAYOUT или BACKGROUND (то же самое), включите флеш? : |Как я могу поставить OnClickListener на фон?

Вот код: *

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); 


// 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 
    toggleBackground(); 

    //Orientación de la APP Horizontal 
    setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); 
    //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(); 

      } 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("MainActivity", "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 
     toggleBackground(); 
    } 

} 


// 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 
     toggleBackground(); 
    } 
} 


// 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 toggleBackground(){ 
    if(isFlashOn){ 
     RelativeLayout layout = (RelativeLayout)findViewById(R.id.background); 
     layout.setBackgroundResource(R.drawable.banderausa); 

    }else{ 
     RelativeLayout layout = (RelativeLayout)findViewById(R.id.background); 
     layout.setBackgroundResource(R.drawable.banderausa2); 

    } 
} 

@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; 
    } 





} 

} 

ответ

1

Внутри вашего onCreate, вы можете иметь компоновщика onClickListener на вашем внешней макета следующим образом:

RelativeLayout layout=(RelativeLayout)findViewById(R.id.yourRelativeLayout); 
layout.setOnClickListener(new OnClickListener() { 

    @Override 
    public void onClick(View v){ 
    } 
}); 

Возможно, вам понадобится добавить android:clickable = true от xml или setClickable(true) от кода.

+0

Я не могу, потому что я новичок, но я знаю, что ваш ответ правильный. Я изменил макет для представления и его ОК: P Спасибо! –

Смежные вопросы