2014-07-17 168 views
-1

有人知道如何在Android中爲按鈕添加單擊聲音嗎?這裏是我的代碼如下。 我檢查了一些教程,但我不知道如何實現它們在我的代碼上。Android單擊聲音

http://s822.photobucket.com/user/backalleylive/media/android_test_error.jpg.html

public class MainActivity extends Activity implements OnClickListener { 

    MediaPlayer clicksound; 

    public void onClick(View a){ 
     switch (a.getId()){ 
     case R.id.login: 
      Intent b = new Intent (this, play.class); 
      startActivity(b); 
      break; 
     case R.id.admin: 
      Intent c = new Intent (this, admin.class); 
      startActivity(c); 
      break; 
     case R.id.exit: 
      finish(); 
      break; 

     } 

    } 


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


     View playButton = findViewById(R.id.login); 
     playButton.setOnClickListener(this); 
     View adminButton = findViewById(R.id.admin); 
     adminButton.setOnClickListener(this); 
     View exitButton = findViewById(R.id.exit); 
     exitButton.setOnClickListener(this); 

    } 



    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     // Inflate the menu; this adds items to the action bar if it is present. 
     getMenuInflater().inflate(R.menu.main, menu); 
     return true; 
    } 

} 
+0

通常情況下,這是沒有必要的。通過向視圖添加點擊偵聽器,只要用戶沒有禁用它們,默認點擊就會播放。如果用戶已經禁用了點擊聲音,那麼不要因爲彈奏而變成混蛋。 – Krylez

+0

可能的重複[如何使用默認點擊聲音使用view.playSoundEffect(SoundEffectConstants.CLICK);](http://stackoverflow.com/questions/13680163/how-do-i-use-the-default-click -sound-using-view-playsoundeffectsoundeffectconconst) – Krylez

回答

-1

對於簡單的點擊音效工作,你必須Android設置啓用按鍵聲音。雖然你的應用程序可以爲你做,但是你需要特定的權限。

即這一個(AndroidManifest.xml的清單標籤中):

<uses-permission android:name="android.permission.WRITE_SETTINGS"/> 

現在,一旦你的應用程序開始啓用觸摸的聲音是這樣的:

Settings.System.putInt(getContentResolver(), Settings.System.SOUND_EFFECTS_ENABLED, 1); 

遺憾的是聲音上的所有意見現在,所以你必須在那些不應該有的人禁用它們。這可以通過添加額外的標籤各方意見進行:

android:soundEffectsEnabled="false" 

更爲不幸的是,現在的聲音是在所有設備的啓用,從而用戶離開你的應用程序與此,你會想盡快禁用它們:

Settings.System.putInt(getContentResolver(), Settings.System.SOUND_EFFECTS_ENABLED, 0); 

這對於作爲小東西的咔嗒聲:-) 更是這樣,你需要確保當用戶按下設備按鈕像回到家裏或在聽不到聲音了不少麻煩。

另一條出路是做

Button b = (Button) findViewById(R.id.button); 

b.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     Settings.System.putInt(getContentResolver(), Settings.System.SOUND_EFFECTS_ENABLED, 1); 
     v.playSoundEffect(SoundEffectConstants.CLICK); 
     Settings.System.putInt(getContentResolver(), Settings.System.SOUND_EFFECTS_ENABLED, 0); 
    } 
}); 

不知道如何常數設置開關會影響性能,但。

還記得那用戶可能已經開啓了這項設定上,所以你首先需要檢查

Settings.System.getInt(getContentResolver(),Settings.System.SOUND_EFFECTS_ENABLED,0); 

編輯:

這裏玩上點擊的聲音,而不是圍繞開關設置一個更好的辦法。

讓你的聲音文件的原始文件夾內,你可以這樣玩:

final MediaPlayer mPlayer = MediaPlayer.create(this, R.raw.sound); 
Button b = (Button) findViewById(R.id.button); 

b.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     mPlayer.start(); 
    } 
}); 
+0

你是否真的認爲修改系統設置是個好主意? – Krylez

+0

我會讓OP決定。這是一個不同於其他人的有效答案,其中..哦等待沒有任何。 – Simas

+0

你已經正確地用'v.playSoundEffect(SoundEffectConstants.CLICK);'回答了這個問題。不幸的是,你已經用建議寫入系統設置,這是非常糟糕的建議。 – Krylez