当前位置:  编程技术>移动开发
本页文章导读:
    ▪Notification的应用        Notification的使用 1.新建状态栏通知  baseNF = new Notification(); //设置通知在状态栏显示的图标 baseNF.icon = R.drawable.icon; //通知时在状态栏显示的内容 baseNF.tickerText = "You clicked BaseNF!.........
    ▪ Mars视频札记——AppWidget(3)广播 控件更新        Mars视频笔记——AppWidget(3)广播 控件更新   AppWidget3 接收来自AppWidget的广播 步骤: 1 在AndroidManifest.xml中为AppWidgetProvider注册新的intent-filter <intent-filter> <action adroid="my.package.MYPACKAGE"> &.........
    ▪ 音频文件头解析信息(艺术家、姓名)为乱码       音频文件头解析信息(艺术家、名称)为乱码 语言设置为英文,扫描时是不进行编码设置的。修改为默认编码方式为简体中文即可 1、MediaScannerClient.cpp在void MediaScannerClient::setLocale(const char* lo.........

[1]Notification的应用
    来源: 互联网  发布时间: 2014-02-18
Notification的使用
1.新建状态栏通知 
baseNF = new Notification();

//设置通知在状态栏显示的图标
baseNF.icon = R.drawable.icon;

//通知时在状态栏显示的内容
baseNF.tickerText = "You clicked BaseNF!";

//通知的默认参数 DEFAULT_SOUND, DEFAULT_VIBRATE, DEFAULT_LIGHTS.
//如果要全部采用默认值, 用 DEFAULT_ALL.
//此处采用默认声音
baseNF.defaults |= Notification.DEFAULT_SOUND;
baseNF.defaults |= Notification.DEFAULT_VIBRATE;
baseNF.defaults |= Notification.DEFAULT_LIGHTS;

//让声音、振动无限循环,直到用户响应
baseNF.flags |= Notification.FLAG_INSISTENT;

//通知被点击后,自动消失
baseNF.flags |= Notification.FLAG_AUTO_CANCEL;

//点击'Clear'时,不清楚该通知(QQ的通知无法清除,就是用的这个)
baseNF.flags |= Notification.FLAG_NO_CLEAR;


//第二个参数 :下拉状态栏时显示的消息标题 expanded message title
//第三个参数:下拉状态栏时显示的消息内容 expanded message text
//第四个参数:点击该通知时执行页面跳转
baseNF.setLatestEventInfo(Lesson_10.this, "Title01", "Content01", pd);

//发出状态栏通知
//The first parameter is the unique ID for the Notification
// and the second is the Notification object.
nm.notify(Notification_ID_BASE, baseNF);

2.更新原来的通知
//更新通知
//比如状态栏提示有一条新短信,还没来得及查看,又来一条新短信的提示。
//此时采用更新原来通知的方式比较。
//(再重新发一个通知也可以,但是这样会造成通知的混乱,而且显示多个通知给用户,对用户也不友好)
baseNF.setLatestEventInfo(Lesson_10.this, "Title02", "Content02", pd);
nm.notify(Notification_ID_BASE, baseNF);

3.清除指定的通知
//清除 baseNF
nm.cancel(Notification_ID_BASE);
4.加有声音的通知
mediaNF = new Notification();
mediaNF.icon = R.drawable.icon;
mediaNF.tickerText = "You clicked MediaNF!";

//自定义声音
mediaNF.sound = Uri.withAppendedPath(Audio.Media.INTERNAL_CONTENT_URI, "6");

//通知时发出的振动
//第一个参数: 振动前等待的时间
//第二个参数: 第一次振动的时长、以此类推
long[] vir = {0,100,200,300};
mediaNF.vibrate = vir;

mediaNF.setLatestEventInfo(Lesson_10.this, "Title03", "Content03", pd);

nm.notify(Notification_ID_MEDIA, mediaNF);

5.自定义显示内容
//自定义下拉视图,比如下载软件时,显示的进度条。
Notification notification = new Notification();

notification.icon = R.drawable.icon;
notification.tickerText = "Custom!";

RemoteViews contentView = new RemoteViews(getPackageName(), R.layout.custom);
contentView.setImageViewResource(R.id.image, R.drawable.icon);
contentView.setTextViewText(R.id.text, "Hello, this message is in a custom expanded view");
notification.contentView = contentView;

//使用自定义下拉视图时,不需要再调用setLatestEventInfo()方法
//但是必须定义 contentIntent
notification.contentIntent = pd;

nm.notify(3, notification);

    
[2] Mars视频札记——AppWidget(3)广播 控件更新
    来源: 互联网  发布时间: 2014-02-18
Mars视频笔记——AppWidget(3)广播 控件更新

 

AppWidget3

接收来自AppWidget的广播

步骤:

1 在AndroidManifest.xml中为AppWidgetProvider注册新的intent-filter

<intent-filter>
	<action adroid="my.package.MYPACKAGE">
</intent-filter>

 

2 使用getBroadcast()方法创建一个PendingIntent

3 为AppWidget当中的控件注册处理器

在onUpdate方法中:

pulblic void onUpdate(Context, AppWidgetManager appWidgetManager, int[] appWidgetIds){
	//创建一个Intent对象
	Intent intent=new Intent();
	//为Intent对象设置Action
	intent.setAction(MY_ACTION); //其中MY_ACTION为定义了的常量my.package.MYPACAGE
	//使用getBroadcast方法,得到PendingIntent对象,该对象执行时会发送一个广播(包含之前的intent)
	PendingIntent pendingIntent=PendingIntent.getBroadcast(context,0,intent,0);
	//之后按惯例得到RemoteViews,并绑定处理器
	RemoteViews remoteViews=new RemoteViews(context.getPackageName(), R.layout.example_appwidget);
	remoteViews.setOnClickPendingIntent(R.id.widgetButtonId, pendingIntent);
	appWidgetManager.updateAppWidget(appWidgetIds, remoteViews);
}

 

4 在onReceive方法中接收广播消息

当点击了widgeButton时 就会触发onReceive方法

从intent中得到action

if(MY_ACTION.equals(action)) 则匹配成功

更新AppWidget中控件的状态

要特别注意AppWidget和主程序不在同一个进程中,所以不能用普通方法

步骤:

1 在RemoteViews类中的一系列方法更新控件

例如各种set方法 setTextViewText setImageViewUri等

在onReceive方法中 匹配action后

 

//得到remoteViews
RemoteViews remoteViews=new RemoteViews(context.getPackageName(),R.layout.example_appwidget);
//修改状态
remoteViews.setImageViewResource(R.id.imageId, R.drawable.aaa);
remoteViews.setTextViewText(R.id.widgetText,"test");

注意 别忘了调用super.onReceive(context,intent)方法 以便非自定义intent传入时候执行系统的onReceive

2 在使用RemoteViews更新控件状态之后 需要使用AppWidgetManager通知AppWidget进行该更新

 

//获得AppWidgetManager (这个对象在onUpdate中是作为参数传入的 但是onReceive中需要自己获取)
AppWidgetManager appWidgetManager=AppWidgetManager.getInstance(context);
ComponentName componentName=new ComponentName(context,ExampleAppWidgetProvider.class);
appWidgetManager.updateAppWidget(componentName, remoteViews);

*RemoteViews代表widget中的控件 ComponentName代表整个widget

可以看到在onUpdate和onReceive中的updateAppWidget方法传入的参数不同(小细节)

 


    
[3] 音频文件头解析信息(艺术家、姓名)为乱码
    来源: 互联网  发布时间: 2014-02-18
音频文件头解析信息(艺术家、名称)为乱码

语言设置为英文,扫描时是不进行编码设置的。修改为默认编码方式为简体中文即可
1、MediaScannerClient.cpp在void MediaScannerClient::setLocale(const char* locale)方法中加入一个判断语句
void MediaScannerClient::setLocale(const char* locale)
{
 LOGE("MediaScannerClient.cpp->MediaScannerClient::setLocale,本地编码格式: %s\n", locale);
    if (!locale) return;

    if (!strncmp(locale, "ja", 2))
        mLocaleEncoding = kEncodingShiftJIS;
    else if (!strncmp(locale, "ko", 2))
        mLocaleEncoding = kEncodingEUCKR;
    else if (!strncmp(locale, "zh", 2)) {
        if (!strcmp(locale, "zh_CN")) {
            // simplified chinese for mainland China
            mLocaleEncoding = kEncodingGBK;
        } else {
            // assume traditional for non-mainland Chinese locales (Taiwan, Hong Kong, Singapore)
            mLocaleEncoding = kEncodingBig5;
        }
    }else{
         mLocaleEncoding = kEncodingGBK;
    }
}


    
最新技术文章:
▪Android开发之登录验证实例教程
▪Android开发之注册登录方法示例
▪Android获取手机SIM卡运营商信息的方法
▪Android实现将已发送的短信写入短信数据库的...
▪Android发送短信功能代码
▪Android根据电话号码获得联系人头像实例代码
▪Android中GPS定位的用法实例
▪Android实现退出时关闭所有Activity的方法
▪Android实现文件的分割和组装
▪Android录音应用实例教程
▪Android双击返回键退出程序的实现方法
▪Android实现侦听电池状态显示、电量及充电动...
▪Android获取当前已连接的wifi信号强度的方法
▪Android实现动态显示或隐藏密码输入框的内容
▪根据USER-AGENT判断手机类型并跳转到相应的app...
▪Android Touch事件分发过程详解
▪Android中实现为TextView添加多个可点击的文本
▪Android程序设计之AIDL实例详解
▪Android显式启动与隐式启动Activity的区别介绍
▪Android按钮单击事件的四种常用写法总结
▪Android消息处理机制Looper和Handler详解
▪Android实现Back功能代码片段总结
▪Android实用的代码片段 常用代码总结
▪Android实现弹出键盘的方法
▪Android中通过view方式获取当前Activity的屏幕截...
▪Android提高之自定义Menu(TabMenu)实现方法
▪Android提高之多方向抽屉实现方法
▪Android提高之MediaPlayer播放网络音频的实现方法...
▪Android提高之MediaPlayer播放网络视频的实现方法...
▪Android提高之手游转电视游戏的模拟操控
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3