Android Sqite数据库 <9>

这一节看看如何使用系统里面数据库数据信息,我们这里设置系统的notification声音文件,系统里面堆放了很多notification声音文件,可以通过在setting里面选择.

但是我们这里在自己种的应用使用:

由于我们选择了还需要播放出来,所以下面我们会在选择系统的notification后,然后获得uri,根据uri播放这个文件:

主类:

package com.example.androidnotifdemo;

import android.media.RingtoneManager;
import android.net.Uri;
import android.os.Bundle;
import android.preference.Preference;
import android.preference.Preference.OnPreferenceClickListener;
import android.preference.PreferenceActivity;
import android.provider.MediaStore;
import android.app.Activity;
import android.content.Intent;
import android.database.Cursor;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.Toast;

public class MainActivity extends PreferenceActivity implements
        OnPreferenceClickListener {

    private Button mbtn;
    private Preference mPref;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        // setContentView(R.layout.activity_main);
        this.addPreferencesFromResource(com.example.androidnotifdemo.R.xml.notif);

        mPref = (Preference) this.findPreference("button_key");
        mPref.setOnPreferenceClickListener(this);

    }

    private String notificationPath = "";

    private void getNotificationTone() {
        Intent intent = new Intent(RingtoneManager.ACTION_RINGTONE_PICKER);
        intent.putExtra(RingtoneManager.EXTRA_RINGTONE_TYPE,
                RingtoneManager.TYPE_NOTIFICATION);
        intent.putExtra(RingtoneManager.EXTRA_RINGTONE_TITLE, "这里填写上你想显示的标题");

        Uri ringtoneUri;
        if (notificationPath != null) { // 这个是你之前选择好的标题,在选择铃声的时候会把它默认选上
            ringtoneUri = Uri.parse(notificationPath);
        } else { // mCustomRingtone如果为空,择默认的铃声会被选中
            ringtoneUri = RingtoneManager
                    .getDefaultUri(RingtoneManager.TYPE_NOTIFICATION); // 选择audio的类型,一般有铃声
                                                                        // 通知音
                                                                        // 闹铃音
        }

        intent.putExtra(RingtoneManager.EXTRA_RINGTONE_EXISTING_URI,
                ringtoneUri);

        // startActivityForResult(intent, REQUEST_CODE_PICK_RINGTONE);
    }

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

    @Override
    public boolean onPreferenceClick(Preference preference) {
        // TODO Auto-generated method stub
         if(preference.getKey().toString().equalsIgnoreCase("button_key")){
        Uri uri = RingtoneManager.getActualDefaultRingtoneUri(
                MainActivity.this, RingtoneManager.TYPE_NOTIFICATION);
        Toast.makeText(
                MainActivity.this,
                "notification addr : "
                        + RingtoneManager.getRingtone(MainActivity.this, uri)
                                .getTitle(MainActivity.this),
                Toast.LENGTH_SHORT).show();// 获取名字
        
        String summary="";
        
        Uri ringtoneUri = RingtoneManager.getActualDefaultRingtoneUri(MainActivity.this, RingtoneManager.TYPE_NOTIFICATION);
        Cursor cursor = MainActivity.this.getContentResolver().query(ringtoneUri,
                new String[] { MediaStore.Audio.Media.TITLE }, null, null, null);
        if (cursor != null) {
            if (cursor.moveToFirst()) {
                summary = cursor.getString(0);
                Toast.makeText(MainActivity.this, "summary : " + summary, Toast.LENGTH_SHORT).show();
            }
            cursor.close();
        }
        
         }
         
        return false;
    }

}


对应的布局文件:

<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" >

    <com.example.androidnotifdemo.DefaultRingtonePreference
        android:key="notif_add"
        android:ringtoneType="notification"
        android:summary="Notification Settings"
        android:title="Notification" />
    <Preference android:key="button_key" android:title="onclick" android:summary="click"/>

</PreferenceScreen>

下面还要写一个notification列表显示并且保存所选的,这个可以直接复制setting源代码中的:

package com.example.androidnotifdemo;

import android.content.Context;
import android.content.Intent;
import android.media.RingtoneManager;
import android.net.Uri;
import android.preference.RingtonePreference;
import android.util.AttributeSet;

public class DefaultRingtonePreference extends RingtonePreference {
    private static final String TAG = "DefaultRingtonePreference";

    public DefaultRingtonePreference(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    @Override
    protected void onPrepareRingtonePickerIntent(Intent ringtonePickerIntent) {
        super.onPrepareRingtonePickerIntent(ringtonePickerIntent);

        /*
         * Since this preference is for choosing the default ringtone, it
         * doesn't make sense to show a 'Default' item.
         */
        ringtonePickerIntent.putExtra(
                RingtoneManager.EXTRA_RINGTONE_SHOW_DEFAULT, false);
    }

    @Override
    protected void onSaveRingtone(Uri ringtoneUri) {
        RingtoneManager.setActualDefaultRingtoneUri(getContext(),
                getRingtoneType(), ringtoneUri);
    }

    @Override
    protected Uri onRestoreRingtone() {
        return RingtoneManager.getActualDefaultRingtoneUri(getContext(),
                getRingtoneType());
    }
}


显示效果如下:

 

 

 

下一节应该是数据库最后一节,将会在这个demo基础上介绍内容观察者.

posted @ 2014-04-06 00:27  MMLoveMeMM  阅读(258)  评论(0)    收藏  举报