2012-05-12 88 views
0

我有一個「假定」在不同的if語句之間切換的按鈕,但我沒有正確地得到它。該按鈕應該通過不同的相機閃光燈狀態(開/自動/關/手電筒),但它只能通過其中一種狀態,然後不會通過其他狀態。按鈕是否正確?還是有不同的切換按鈕?Android:切換按鈕(允許多次點擊)

//Flash Button 
    final Button flashButton = (Button) findViewById(id.camera_flash); 
    flashButton.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      Parameters p = mCamera.getParameters(); 

      // TODO Auto-generated method stub 
      if(p.getFlashMode() == android.hardware.Camera.Parameters.FLASH_MODE_ON){ 
       p.setFlashMode(Parameters.FLASH_MODE_OFF); 
       mCamera.setParameters(p); 
       mCamera.startPreview(); 
       flashButton.setText("Off"); 
       Log.e("Torch","MODE OFF"); 

      }else if(p.getFlashMode() == android.hardware.Camera.Parameters.FLASH_MODE_OFF){ 
       p.setFlashMode(Parameters.FLASH_MODE_TORCH); 
       mCamera.setParameters(p); 
       mCamera.release(); 
       mCamera=null; 
       flashButton.setText("TORCH"); 
       Log.e("Torch","MODE TORCH"); 

      }else if(p.getFlashMode() == android.hardware.Camera.Parameters.FLASH_MODE_AUTO){ 
       p.setFlashMode(Parameters.FLASH_MODE_ON); 
       mCamera.setParameters(p); 
       mCamera.startPreview(); 
       flashButton.setText("ON"); 
       Log.e("Torch","MODE ON"); 

      }else if(p.getFlashMode() == android.hardware.Camera.Parameters.FLASH_MODE_TORCH){ 
       p.setFlashMode(Parameters.FLASH_MODE_ON); 
       mCamera.setParameters(p); 
       mCamera.startPreview(); 
       flashButton.setText("AUTO"); 
       Log.e("Torch","MODE AUTO"); 

      }else{ 
       p.setFlashMode(Parameters.FLASH_MODE_AUTO); 
       mCamera.setParameters(p); 
       mCamera.startPreview(); 
       flashButton.setText("AUTO"); 
       Log.e("Torch","MODE AUTO"); 

      }   
     } 

因此,基本上,它只能前往FLASH_MODE_AUTO,然後按鈕不起作用了。我的if語句是否正確?提前致謝!

更新:

這是在我的onCreate()。不確定這會有幫助嗎?

+0

它似乎沒問題... – AAnkit

+0

@AnkitAwasthi出於某種原因,它不通過if語句捕捉。我正在進行日誌檢查並查看'p.getFlashMode()'和'android.hardware.Camera.Parameters.FLASH_MODE_OFF')是什麼,但是即使它們彼此等同於'==',它也不會進入,如果聲明 – hellomello

回答

2

不確定這是否有幫助,但對所有條件嘗試使用「equals(String)」而不是「==」。

0

你有一些錯誤的方式你的文字。例如,您測試FLASH_MODE_AUTO,然後將setText設置爲「ON」。您測試FLASH_MODE_TORCH,然後將文本設置爲「AUTO」。在繼續之前,您可能需要清除它。然後在程序執行時跟蹤它。

+0

它應該是這樣的,因爲如果我再次按下按鈕,它會檢查它是否在AUTO中,如果它在AUTO中,那麼它應該進入不同的狀態...... – hellomello