博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android Sqite数据库 <9>
阅读量:7255 次
发布时间:2019-06-29

本文共 5093 字,大约阅读时间需要 16 分钟。

这一节看看如何使用系统里面数据库数据信息,我们这里设置系统的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;    }}

对应的布局文件:

下面还要写一个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基础上介绍内容观察者.

转载地址:http://uykdm.baihongyu.com/

你可能感兴趣的文章
(转)8 Tactics to Combat Imbalanced Classes in Your Machine Learning Dataset
查看>>
电信网络拓扑图自动布局之总线
查看>>
微信开放平台开发——网页微信扫码登录(OAuth2.0)
查看>>
DataList和Repeat无数据时提示暂无数据几种方法
查看>>
SharePoint is Flowers and Rainbows and Unicorns
查看>>
【转载】ASP.NET MVC:通过 FileResult 向 浏览器 发送文件
查看>>
系统视图和系统存储过程DDL语句
查看>>
C#温故而知新学习系列之XML编程—XmlSerializer类把复杂对象序列化为XML文档(六)...
查看>>
用C做的电子时钟程序
查看>>
符号引用(typeglob,别名)与全局变量的修改
查看>>
利用泛型实现通用的list和array转换
查看>>
打油诗 自嘲
查看>>
计划开始写redis的源码分析笔记
查看>>
java 空字条串空判断 效率
查看>>
js倒计时跳转页面
查看>>
如何在工作中自学UI设计
查看>>
Qt之布局管理——停靠窗口
查看>>
写了一个远程桌面管理的Visual Studio扩展程序
查看>>
字节流、字符串、16进制字符串转换__Java(转)
查看>>
监视在input框中按下回车(enter) js实现
查看>>