2013-06-05 84 views
0

我的應用程序正在調用圖庫中的圖像,並且當您單擊圖像的某個位置時,它會顯示出顏色。我面臨一個問題;我正在使用這些代碼來獲取圖像上每個位置的顏色值。有趣的是,它能夠正確檢測顏色值(即紅色表示r = 255,g = 0,b = 0),但是當涉及到說出顏色名稱時(我用'TextToSpeech'表示顏色名稱),它主要是說:」顏色是黑色的(除非你點擊白色的,它說的顏色是白色的 這裏是我的代碼:顏色值錯誤

if ((Color.red(pixel) & Color.blue(pixel) & Color.green(pixel))> 220) { 
     if(TTSInitialized){ 
      mTts.speak("Color is White", TextToSpeech.QUEUE_FLUSH, null); 
     } 
     textViewCol.setText("Color is White."); 
     return true;} 

    if ((Color.red(pixel) & Color.blue(pixel) & Color.green(pixel)) < 10) { 
     if(TTSInitialized){ 
      mTts.speak("Color is Black", TextToSpeech.QUEUE_FLUSH, null); 
     } 
     textViewCol.setText("Color is Black."); 
     return true;} 

    if ((Color.red(pixel) & Color.blue(pixel)) > 120) { 
     if(TTSInitialized){ 
      mTts.speak("Color is Purple", TextToSpeech.QUEUE_FLUSH, null); 

     } 
     textViewCol.setText("Color is Purple."); 
    return true;} 

    if (Color.red(pixel) > (Color.blue(pixel) & Color.green(pixel))) { 
     if(TTSInitialized){ 
      mTts.speak("Color is RED", TextToSpeech.QUEUE_FLUSH, null); 
     } 
     textViewCol.setText("Color is Red."); 
     return true;} 

我的應用程序有紅,綠,藍,黃,紫,青色,黑色和白色,現在的問題是:我寫代碼的方式是否正確?如果不是,你建議什麼?爲什麼總是說黑色,不管你點擊紅色,藍色還是其他顏色?!

回答

1

你在第二張支票上有點偏離,我想你想要這個:

if ((Color.red(pixel) | Color.blue(pixel) | Color.green(pixel)) < 10) { 
     if(TTSInitialized){ 
      mTts.speak("Color is Black", TextToSpeech.QUEUE_FLUSH, null); 
     } 
     textViewCol.setText("Color is Black."); 
     return true; 
    } 

這樣你的OR'ing值和獲得累計金額,而不是三個值的最小值。

例如:

3 | 7 | 255 = 255

但3 255 = 3

另外,與你的所有的檢查,我可能會重做。 &實際上比強度檢查更多的位掩碼。通過&,您只能獲得每個數字中設置的位。

白,我會使用:

if (Color.red(pixel) > 220 && Color.blue(pixel) > 220 && Color.green(pixel) > 220) 

爲紫色:

if (Color.red(pixel) > 120 && Color.blue(pixel) > 120) 

紅色:

if (Color.red(pixel) > (Color.blue(pixel) | Color.green(pixel))) 
+0

我喝給你! 謝謝,它的工作......現在我必須看看它在真實手機上的效果如何。上次,它在模擬器中工作正常,但是一旦我導出已簽名的應用程序並將其安裝在手機上,就沒有聲音了! 你有任何建議嗎?! – Sean

+0

我是一個圖形傢伙...沒有那麼多的音頻。你應該在這裏問一個音頻問題。我相信有人會回答它。 – HalR

+0

謝謝! – Sean