我怎样才能使铃声的活动(即总是出现在设置),以便用户可以选择系统铃声她的铃声我GOOGLE了,但我没有找到完整的教程,我真的很困惑,请给我补习或某些codeS。
另外,如果我希望用户选择特殊的铃声在我的应用通知我应该使用共享preference或preference?
我已经做了菜单:
//菜单code部分#2
公共布尔onOptionsItemSelected(菜单项项){
开关(item.getItemId()){
案例R.id.about:
startActivity(新意图(这一点,About.class));
返回true;
案例R.id.help:
startActivity(新意图(这一点,Help.class));
返回true;
案例R.id.setting:
startActivity(新意图(这一点,Setting.class));
返回true;
默认:
返回super.onOptionsItemSelected(项目);
}
解决方案
全部code:
RES / XML / preferences.xml
< XML版本=1.0编码=UTF-8&GT?;
< preferenceScreen的xmlns:机器人=http://schemas.android.com/apk/res/android>
< preferenceCategory
机器人:标题=第二类>
<铃声preference
机器人:名称=铃声preference
机器人:总结=选择铃声
机器人:标题=铃声
机器人:关键=铃声preF/>
< / preferenceCategory>
< / preferenceScreen>
preferences.class
公共类preferences扩展preferenceActivity {
@覆盖
保护无效的onCreate(包savedInstanceState){
super.onCreate(savedInstanceState);
加preferencesFromResource(R.xml preferences。);
}
}
您code去这里:
公共布尔onOptionsItemSelected(菜单项项){
开关(item.getItemId()){
案例R.id.about:
// startActivity(新意图(这一点,About.class));
返回true;
案例R.id.help:
startActivity(新意图(这一点,Help.class));
返回true;
案例R.id.setting:
意图settingsActivity =新的意图(getBaseContext()
preferences.class);
startActivity(settingsActivity);
返回true;
默认:
返回super.onOptionsItemSelected(项目);
}
要读取code这些preferences,我们应该创建一个获取preFS()
方法,我们可以在 ONSTART()方法。当我们调用它的 ONSTART()
方法,而不是的onCreate()
,我们可以肯定的是,preferences负载的时候,我们已经将它们设置并返回到我们的主要活动,
该获取preFS()
方法可以是这样的:
字符串铃声preference;
//获取XML / preferences.xml preferences
共享preferences preFS = preferenceManager
.getDefaultShared preferences(getBaseContext());
铃声preference = prefs.getString(铃声preF,
DEFAULT_RINGTONE_URI);
AndroidManifest.xml中
<活动
机器人:NAME =preferences。
机器人:标签=@字符串/ SET_ preferences>
< /活性GT;
How can I make ringtone activity (that always appear in setting) so the user can choose her ringtone from system ringTones I googled it but I didn't find complete tutorial, I am really confused, please give me tutorial or some codes.
Also, if I want the user to choose the special ringtone to Notification in my application should i use Shared preference or preference?
I already did the Menu:
// Menu Code Part#2
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.about:
startActivity(new Intent(this, About.class));
return true;
case R.id.help:
startActivity(new Intent(this, Help.class));
return true;
case R.id.setting:
startActivity(new Intent(this, Setting.class));
return true;
default:
return super.onOptionsItemSelected(item);
}
解决方案
Full code:
res/xml/preferences.xml
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
<PreferenceCategory
android:title="Second Category">
<RingtonePreference
android:name="Ringtone Preference"
android:summary="Select a ringtone"
android:title="Ringtones"
android:key="ringtonePref" />
</PreferenceCategory>
</PreferenceScreen>
Preferences.class
public class Preferences extends PreferenceActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.preferences);
}
}
Your code go here:
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.about:
// startActivity(new Intent(this, About.class));
return true;
case R.id.help:
startActivity(new Intent(this, Help.class));
return true;
case R.id.setting:
Intent settingsActivity = new Intent(getBaseContext(),
Preferences.class);
startActivity(settingsActivity);
return true;
default:
return super.onOptionsItemSelected(item);
}
To read these preferences from code, we should create a getPrefs()
method, which we can call in the onStart()
method. When we call it in the onStart()
method instead of onCreate()
, we can be sure that the preferences load when we have set them and returned to our main activity,
The getPrefs()
method could look like this:
String ringtonePreference;
// Get the xml/preferences.xml preferences
SharedPreferences prefs = PreferenceManager
.getDefaultSharedPreferences(getBaseContext());
ringtonePreference = prefs.getString("ringtonePref",
"DEFAULT_RINGTONE_URI");
androidmanifest.xml
<activity
android:name=".Preferences"
android:label="@string/set_preferences">
</activity>