当前位置: 编程技术>移动开发
本页文章导读:
▪Unity3D学习系列课程 Unity3D学习系列教程转自http://www.devdiv.com/iOS_iPhone-unity_d_-thread-128068-1-1.html
1. Unity3D 游戏引擎之构建游戏框架与导出IOS项目(一)
http://www.devdiv.com/Unity3D_%E
... log-31865-8995.html
3. Unity3D 游戏引擎.........
▪ Notification及NotificationManager的施用详解 Notification及NotificationManager的使用详解通知是应用程序通知用户的一种方式,它无须活动,由通知管理器进行统一管理。通知包含一下功能:
1. 创建新的状态栏图标
2. 在扩展的.........
▪ ARM NEON 授命 ARM NEON 指令 在初学NDK时,接触到 HelloNeon例程,了解到 Neon是ARMv7-AR 系列中引入的并行模块,可以让你同时操作8个16位数据或4个32位数据,在信号处理,图像处理,视频编解码优化方面有.........
[1]Unity3D学习系列课程
来源: 互联网 发布时间: 2014-02-18
Unity3D学习系列教程
2. Unity3D 游戏引擎之实现平面多点触摸(二)
http://www.devdiv.com/Unity3D_%E ... log-31865-8996.html
3. Unity3D 游戏引擎之构建简单的游戏世界(三)
http://www.devdiv.com/Unity3D_%E ... log-31865-8997.html
4. Unity3D 游戏引擎之构建3D游戏世界的基本地形(四)
http://www.devdiv.com/Unity3D_%E ... log-31865-8998.html
5. Unity3D 游戏引擎之构建游戏地形的基本元素(五)
http://www.devdiv.com/Unity3D_%E ... log-31865-8999.html
6. Unity3D 游戏引擎之脚本实现模型的平移与旋转(六)
http://www.devdiv.com/Unity3D_%E ... log-31865-9000.html
7. Unity3D 游戏引擎之控制模型移动旋转与碰撞(七)
http://www.devdiv.com/Unity3D_%E ... log-31865-9001.html
8. Unity3D 游戏引擎之IOS触摸屏手势控制镜头旋转与缩放(八)
http://www.devdiv.com/Unity3D_%E ... log-31865-9002.html
9. Unity3D 游戏引擎之IOS高级界面发送消息与Unity3D消息的接收(九)
http://www.devdiv.com/Unity3D_%E ... log-31865-9003.html
10. Unity3D 游戏引擎之Unity3D回馈IOS高级界面消息 (十)
http://www.devdiv.com/Unity3D_%E ... log-31865-9004.html
11. Unity3D 游戏引擎之IOS自定义游戏摇杆与飞机平滑的移动(十一)
http://www.devdiv.com/Unity3D_%E ... log-31865-9005.html
12. Unity3D 游戏引擎之FBX模型的载入与人物行走动画的播放(十二)
http://www.devdiv.com/Unity3D_%E ... log-31865-9006.html
13. Unity3D 游戏引擎之平面小球重力感应详解(十三)
http://www.devdiv.com/Unity3D_%E ... log-31865-9007.html
14. Unity3D 游戏引擎之游戏场景的切换与持久化简单数据的储存(十四)
http://www.devdiv.com/Unity3D_%E ... log-31865-9008.html
15. Unity3D 游戏引擎之详解游戏开发音频的播放(十五)
http://www.devdiv.com/Unity3D_%E ... log-31865-9009.html
16. Unity3D 游戏引擎之感应IOS设备旋转与iPhone键盘事件(十六)
http://www.devdiv.com/Unity3D_%E ... log-31865-9010.html
17. Unity3D 游戏引擎之游戏对象的访问绘制线与绘制面详解(十七)
http://www.devdiv.com/Unity3D_%E ... log-31865-9011.html
18. Unity3D研究院之打开Activity与调用JAVA代码传递参数(十八)
http://www.devdiv.com/Unity3D%E7 ... log-31865-9012.html
19. Unity3D研究院之与Android相互传递消息(十九)
http://www.devdiv.com/Unity3D%E7 ... log-31865-9013.html
20. Unity3D研究院之与根据动态的两个轨迹点绘制面详解(二十)
http://www.devdiv.com/Unity3D%E7 ... log-31865-9021.html
21. Unity3D研究院之2D游戏开发制作原理(二十一)
http://www.devdiv.com/Unity3D%E7 ... log-31865-9026.html
22. Unity3D研究院之角色控制器组件研究(二十二)
http://www.devdiv.com/Unity3D%E7 ... log-31865-9027.html
23. Unity3D研究院之使用C#语言建立本地数据库(二十三)
http://www.devdiv.com/Unity3D%E7 ... log-31865-9028.html
24. Unity3D研究院之鼠标控制角色移动与奔跑示例(二十四)
http://www.devdiv.com/Unity3D%E7 ... log-31865-9029.html
25. Unity3D研究院之两种方式播放游戏视频(二十五)
http://www.devdiv.com/Unity3D%E7 ... log-31865-9030.html
26. Unity3D研究院之人物头顶名称与血条更新与绘制(二十六)
http://www.devdiv.com/Unity3D%E7 ... log-31865-9031.html
27. Unity3D研究院之IOS Android支持中文与本地文件的读取写入(二十七)
http://www.devdiv.com/Unity3D%E7 ... log-31865-9032.html
28. Unity3D研究院之Android NDK编译C/C++结合Unity实现本地数据共享(二十八)
http://www.devdiv.com/Unity3D%E7 ... log-31865-9033.html
29. Unity3D研究院之第一人称第三人称角色控制组件修改C#版本(二十九)
http://www.devdiv.com/Unity3D%E7 ... log-31865-9034.html
转自http://www.devdiv.com/iOS_iPhone-unity_d_-thread-128068-1-1.html
1. Unity3D 游戏引擎之构建游戏框架与导出IOS项目(一)
http://www.devdiv.com/Unity3D_%E ... log-31865-8995.html2. Unity3D 游戏引擎之实现平面多点触摸(二)
http://www.devdiv.com/Unity3D_%E ... log-31865-8996.html
3. Unity3D 游戏引擎之构建简单的游戏世界(三)
http://www.devdiv.com/Unity3D_%E ... log-31865-8997.html
4. Unity3D 游戏引擎之构建3D游戏世界的基本地形(四)
http://www.devdiv.com/Unity3D_%E ... log-31865-8998.html
5. Unity3D 游戏引擎之构建游戏地形的基本元素(五)
http://www.devdiv.com/Unity3D_%E ... log-31865-8999.html
6. Unity3D 游戏引擎之脚本实现模型的平移与旋转(六)
http://www.devdiv.com/Unity3D_%E ... log-31865-9000.html
7. Unity3D 游戏引擎之控制模型移动旋转与碰撞(七)
http://www.devdiv.com/Unity3D_%E ... log-31865-9001.html
8. Unity3D 游戏引擎之IOS触摸屏手势控制镜头旋转与缩放(八)
http://www.devdiv.com/Unity3D_%E ... log-31865-9002.html
9. Unity3D 游戏引擎之IOS高级界面发送消息与Unity3D消息的接收(九)
http://www.devdiv.com/Unity3D_%E ... log-31865-9003.html
10. Unity3D 游戏引擎之Unity3D回馈IOS高级界面消息 (十)
http://www.devdiv.com/Unity3D_%E ... log-31865-9004.html
11. Unity3D 游戏引擎之IOS自定义游戏摇杆与飞机平滑的移动(十一)
http://www.devdiv.com/Unity3D_%E ... log-31865-9005.html
12. Unity3D 游戏引擎之FBX模型的载入与人物行走动画的播放(十二)
http://www.devdiv.com/Unity3D_%E ... log-31865-9006.html
13. Unity3D 游戏引擎之平面小球重力感应详解(十三)
http://www.devdiv.com/Unity3D_%E ... log-31865-9007.html
14. Unity3D 游戏引擎之游戏场景的切换与持久化简单数据的储存(十四)
http://www.devdiv.com/Unity3D_%E ... log-31865-9008.html
15. Unity3D 游戏引擎之详解游戏开发音频的播放(十五)
http://www.devdiv.com/Unity3D_%E ... log-31865-9009.html
16. Unity3D 游戏引擎之感应IOS设备旋转与iPhone键盘事件(十六)
http://www.devdiv.com/Unity3D_%E ... log-31865-9010.html
17. Unity3D 游戏引擎之游戏对象的访问绘制线与绘制面详解(十七)
http://www.devdiv.com/Unity3D_%E ... log-31865-9011.html
18. Unity3D研究院之打开Activity与调用JAVA代码传递参数(十八)
http://www.devdiv.com/Unity3D%E7 ... log-31865-9012.html
19. Unity3D研究院之与Android相互传递消息(十九)
http://www.devdiv.com/Unity3D%E7 ... log-31865-9013.html
20. Unity3D研究院之与根据动态的两个轨迹点绘制面详解(二十)
http://www.devdiv.com/Unity3D%E7 ... log-31865-9021.html
21. Unity3D研究院之2D游戏开发制作原理(二十一)
http://www.devdiv.com/Unity3D%E7 ... log-31865-9026.html
22. Unity3D研究院之角色控制器组件研究(二十二)
http://www.devdiv.com/Unity3D%E7 ... log-31865-9027.html
23. Unity3D研究院之使用C#语言建立本地数据库(二十三)
http://www.devdiv.com/Unity3D%E7 ... log-31865-9028.html
24. Unity3D研究院之鼠标控制角色移动与奔跑示例(二十四)
http://www.devdiv.com/Unity3D%E7 ... log-31865-9029.html
25. Unity3D研究院之两种方式播放游戏视频(二十五)
http://www.devdiv.com/Unity3D%E7 ... log-31865-9030.html
26. Unity3D研究院之人物头顶名称与血条更新与绘制(二十六)
http://www.devdiv.com/Unity3D%E7 ... log-31865-9031.html
27. Unity3D研究院之IOS Android支持中文与本地文件的读取写入(二十七)
http://www.devdiv.com/Unity3D%E7 ... log-31865-9032.html
28. Unity3D研究院之Android NDK编译C/C++结合Unity实现本地数据共享(二十八)
http://www.devdiv.com/Unity3D%E7 ... log-31865-9033.html
29. Unity3D研究院之第一人称第三人称角色控制组件修改C#版本(二十九)
http://www.devdiv.com/Unity3D%E7 ... log-31865-9034.html
[2] Notification及NotificationManager的施用详解
来源: 互联网 发布时间: 2014-02-18
Notification及NotificationManager的使用详解
通知是应用程序通知用户的一种方式,它无须活动,由通知管理器进行统一管理。通知包含一下功能:
1. 创建新的状态栏图标
2. 在扩展的状态栏窗口显示额外的信息(可以发起一个意图)
3. 闪烁/LED
4. 让手机震动
5. 发出声音(铃声,媒体库歌曲)
通知管理器是用来处理通知的系统服务,使用getSystemService方法可以获得对它的引用,如下:
NotificationManager notificationManager = (NotificationManager) context.getSystemService(android.content.Context.NOTIFICATION_SERVICE);
通过使用通知管理器,可以触发新的通知,修改现有的通知或者删除那些不再需要的通知。首先创建一个新的Notification对象并传递给它要在状态栏显示的图标、状态栏的点击文本以及这个通知的时间。可以设置Notification对象的number属性来显示一个状态栏图标所表示的事件的数量。
Notification notification = new Notification(R.drawable.icon,"在EoeAndroidReceiver1中", System.currentTimeMillis());
可以通过两张方式在扩展的状态窗口配置通知的外观。
1. 使用setLatestEventInfo方法更新标准的扩展的状态通知显示中所显示的详细信息。
2. 使用一个远程视图(Remote View)设置contentView和contentIntent,以便为扩展的状态显示分配一个定制的UI。
最简单的方法是使用setLatestEventInfo方法来填充默认的状态窗口布局。标准的扩展的状态窗口布局会显示构造函数中定义的图标和时间,以及标题和一个详细信息字符串。
notification.setLatestEventInfo(context, "在EoeAndroidReceiver1中", null,contentIntent);
通知常用于请求用户的动作或注意,所以可以指定一个PendingIntent,当用户单击通知项的时候触发它,在大多数情况下,该意图应该打开应用程序,并导航到为通知提供了上下文的活动。
PendingIntent contentIntent = PendingIntent.getActivity(context, 0,new Intent(context, ActivityMain.class), 0);
notification.setLatestEventInfo(context, "在EoeAndroidReceiver1中", null,contentIntent);
notificationManager.notify(NOTIFICATION_ID, notification);
向通知添加声音、闪灯和振动效果的最简单、最一致的方式是使用当前的用户默认设置,使用defaults属性,可以组合:
Notification.DEFAULT_LIGHTS
Notification.DEFAULT_SOUND
Notification.DEFAULT_VIBRATE
如果想全部使用默认值,可以使用Notification.DEFAULT_ALL常量。
Notification.defaults =Notificaiton.DEFAULT_ALL;
通过向sound属性分配一个位置URI,android可以将手机上的任意音频文件作为通知进行播放。要使用自己定制的音频,需要把它复制到设备上,或者把它包含在原始资源(raw)中。
Uri uri =RingtoneManager.getDefaultUri(RingtongManager.TYPE_NOTIFICATION);
Notification.sound=uri;
可以使用电话的振动功能,让通知执行指定类型的振动。Android可以控制振动的类型,可以使用振动来传递信息或者吸引用户的注意。
要设置振动类型,可以向通知的vibrate属性分配一个longs类型的数组:构造该数组,可以使得代表振动时间的值和代表暂停时间的值交替存在。使用振动必须添加权限:
<uses-permissionandroid:name=”android.permission.VIBRATE”/>
Long[] vibrate = newlong[]{1000,1000,1000,1000,1000};
notification.vibrate=vibrate;
通知还可以包含用来配置设备的LED的颜色和闪烁频率的属性。
每个设备在对LED的控制方面可能具有不同的限制。如果指定的颜色可用,则将使用一个与指定颜色最接近的颜色。
ledARGB属性可以用来设置LED颜色,而ledOffMS和ledOnMS属性则可以设置LED闪烁的频率和模式。可以通过把ledOnMS属性设置为1,并且把ledOffMS设置为0来打开LED,或者也可以通过把这两个属性都设置为0来关闭LED。
一旦配置了LED设置,就必须在通知的flags属性中添加FLAG_SHOW_LIGHTS标记。
notification.ledARGB = Color.RED
notification.ledOffMS = 0;
notification.ledOnMS = 1;
notification.flags = notification.flags |Notification.FLAG_SHOW_LIGHTS;
通过设置通知的FLAG_INSISTENT和FLAG_ONGOING_EVENT标记,可以把它配置为持续的或者连续的。
持续的通知会一直重复音频、振动和闪灯设置,只到被取消为止。
1. NotificationManager和Notification用来设置通知。
通知的设置等操作相对比较简单,基本的使用方式就是用新建一个Notification对象,然后设置好通知的各项参数,然后使用系统后台运行的NotificationManager服务将通知发出来。
基本步骤如下:
1)得到NotificationManager:
String ns = Context.NOTIFICATION_SERVICE;
NotificationManager mNotificationManager = (NotificationManager) getSystemService(ns);
2)创建一个新的Notification对象:
Notification notification = new Notification();
notification.icon = R.drawable.notification_icon;
也可以使用稍微复杂一些的方式创建Notification:
int icon = R.drawable.notification_icon; //通知图标
CharSequence tickerText = "Hello"; //状态栏(Status Bar)显示的通知文本提示
long when = System.currentTimeMillis(); //通知产生的时间,会在通知信息里显示
Notification notification = new Notification(icon, tickerText, when);
3)填充Notification的各个属性:
Context context = getApplicationContext();
CharSequence contentTitle = "My notification";
CharSequence contentText = "Hello World!";
Intent notificationIntent = new Intent(this, MyClass.class);
PendingIntent contentIntent = PendingIntent.getActivity(this, 0, notificationIntent, 0);
notification.setLatestEventInfo(context, contentTitle, contentText, contentIntent);
Notification提供了丰富的手机提示方式:
a)在状态栏(Status Bar)显示的通知文本提示,如:
notification.tickerText = "hello";
b)发出提示音,如:
notification.defaults |= Notification.DEFAULT_SOUND;
notification.sound = Uri.parse("file:///sdcard/notification/ringer.mp3");
notification.sound = Uri.withAppendedPath(Audio.Media.INTERNAL_CONTENT_URI, "6");
c)手机振动,如:
notification.defaults |= Notification.DEFAULT_VIBRATE;
long[] vibrate = {0,100,200,300};
notification.vibrate = vibrate;
d)LED灯闪烁,如:
notification.defaults |= Notification.DEFAULT_LIGHTS;
或者可以自己的LED提醒模式:
notification.ledARGB = 0xff00ff00;
notification.ledOnMS = 300; //亮的时间
notification.ledOffMS = 1000; //灭的时间
notification.flags |= Notification.FLAG_SHOW_LIGHTS;
* 更多的特征属性
* notification.flags |= FLAG_AUTO_CANCEL; //在通知栏上点击此通知后自动清除此通知
* notification.flags |= FLAG_INSISTENT; //重复发出声音,直到用户响应此通知
* notification.flags |= FLAG_ONGOING_EVENT; //将此通知放到通知栏的"Ongoing"即"正在运行"组中
* notification.flags |= FLAG_NO_CLEAR; //表明在点击了通知栏中的"清除通知"后,此通知不清除,
* //经常与FLAG_ONGOING_EVENT一起使用
* notification.number = 1; //number字段表示此通知代表的当前事件数量,它将覆盖在状态栏图标的顶部
* //如果要使用此字段,必须从1开始
* notification.iconLevel = ; //
*/
//设置通知的事件消息
Context context = getApplicationContext(); //上下文
CharSequence contentTitle = "My Notification"; //通知栏标题
CharSequence contentText = "Hello World!"; //通知栏内容
Intent notificationIntent = new Intent(this,Main.class); //点击该通知后要跳转的Activity
PendingIntent contentIntent = PendingIntent.getActivity(this,0,notificationIntent,0);
notification.setLatestEventInfo(context, contentTitle, contentText, contentIntent);
//把Notification传递给NotificationManager
mNotificationManager.notify(0,notification);
4)发送通知:
private static final int ID_NOTIFICATION = 1;
mNotificationManager.notify(ID_NOTIFICATION, notification);
2. 通知的更新
如果需要更新一个通知,只需要在设置好notification之后,再调用setLatestEventInfo,然后重新发送一次通知即可。
3. 自定义通知视图
这部分可以参考官方文档,讲的很详细了。
AndroidSDK: docs/guide/topics/ui/notifiers/notifications.html
通知是应用程序通知用户的一种方式,它无须活动,由通知管理器进行统一管理。通知包含一下功能:
1. 创建新的状态栏图标
2. 在扩展的状态栏窗口显示额外的信息(可以发起一个意图)
3. 闪烁/LED
4. 让手机震动
5. 发出声音(铃声,媒体库歌曲)
通知管理器是用来处理通知的系统服务,使用getSystemService方法可以获得对它的引用,如下:
NotificationManager notificationManager = (NotificationManager) context.getSystemService(android.content.Context.NOTIFICATION_SERVICE);
通过使用通知管理器,可以触发新的通知,修改现有的通知或者删除那些不再需要的通知。首先创建一个新的Notification对象并传递给它要在状态栏显示的图标、状态栏的点击文本以及这个通知的时间。可以设置Notification对象的number属性来显示一个状态栏图标所表示的事件的数量。
Notification notification = new Notification(R.drawable.icon,"在EoeAndroidReceiver1中", System.currentTimeMillis());
可以通过两张方式在扩展的状态窗口配置通知的外观。
1. 使用setLatestEventInfo方法更新标准的扩展的状态通知显示中所显示的详细信息。
2. 使用一个远程视图(Remote View)设置contentView和contentIntent,以便为扩展的状态显示分配一个定制的UI。
最简单的方法是使用setLatestEventInfo方法来填充默认的状态窗口布局。标准的扩展的状态窗口布局会显示构造函数中定义的图标和时间,以及标题和一个详细信息字符串。
notification.setLatestEventInfo(context, "在EoeAndroidReceiver1中", null,contentIntent);
通知常用于请求用户的动作或注意,所以可以指定一个PendingIntent,当用户单击通知项的时候触发它,在大多数情况下,该意图应该打开应用程序,并导航到为通知提供了上下文的活动。
PendingIntent contentIntent = PendingIntent.getActivity(context, 0,new Intent(context, ActivityMain.class), 0);
notification.setLatestEventInfo(context, "在EoeAndroidReceiver1中", null,contentIntent);
notificationManager.notify(NOTIFICATION_ID, notification);
向通知添加声音、闪灯和振动效果的最简单、最一致的方式是使用当前的用户默认设置,使用defaults属性,可以组合:
Notification.DEFAULT_LIGHTS
Notification.DEFAULT_SOUND
Notification.DEFAULT_VIBRATE
如果想全部使用默认值,可以使用Notification.DEFAULT_ALL常量。
Notification.defaults =Notificaiton.DEFAULT_ALL;
通过向sound属性分配一个位置URI,android可以将手机上的任意音频文件作为通知进行播放。要使用自己定制的音频,需要把它复制到设备上,或者把它包含在原始资源(raw)中。
Uri uri =RingtoneManager.getDefaultUri(RingtongManager.TYPE_NOTIFICATION);
Notification.sound=uri;
可以使用电话的振动功能,让通知执行指定类型的振动。Android可以控制振动的类型,可以使用振动来传递信息或者吸引用户的注意。
要设置振动类型,可以向通知的vibrate属性分配一个longs类型的数组:构造该数组,可以使得代表振动时间的值和代表暂停时间的值交替存在。使用振动必须添加权限:
<uses-permissionandroid:name=”android.permission.VIBRATE”/>
Long[] vibrate = newlong[]{1000,1000,1000,1000,1000};
notification.vibrate=vibrate;
通知还可以包含用来配置设备的LED的颜色和闪烁频率的属性。
每个设备在对LED的控制方面可能具有不同的限制。如果指定的颜色可用,则将使用一个与指定颜色最接近的颜色。
ledARGB属性可以用来设置LED颜色,而ledOffMS和ledOnMS属性则可以设置LED闪烁的频率和模式。可以通过把ledOnMS属性设置为1,并且把ledOffMS设置为0来打开LED,或者也可以通过把这两个属性都设置为0来关闭LED。
一旦配置了LED设置,就必须在通知的flags属性中添加FLAG_SHOW_LIGHTS标记。
notification.ledARGB = Color.RED
notification.ledOffMS = 0;
notification.ledOnMS = 1;
notification.flags = notification.flags |Notification.FLAG_SHOW_LIGHTS;
通过设置通知的FLAG_INSISTENT和FLAG_ONGOING_EVENT标记,可以把它配置为持续的或者连续的。
持续的通知会一直重复音频、振动和闪灯设置,只到被取消为止。
1. NotificationManager和Notification用来设置通知。
通知的设置等操作相对比较简单,基本的使用方式就是用新建一个Notification对象,然后设置好通知的各项参数,然后使用系统后台运行的NotificationManager服务将通知发出来。
基本步骤如下:
1)得到NotificationManager:
String ns = Context.NOTIFICATION_SERVICE;
NotificationManager mNotificationManager = (NotificationManager) getSystemService(ns);
2)创建一个新的Notification对象:
Notification notification = new Notification();
notification.icon = R.drawable.notification_icon;
也可以使用稍微复杂一些的方式创建Notification:
int icon = R.drawable.notification_icon; //通知图标
CharSequence tickerText = "Hello"; //状态栏(Status Bar)显示的通知文本提示
long when = System.currentTimeMillis(); //通知产生的时间,会在通知信息里显示
Notification notification = new Notification(icon, tickerText, when);
3)填充Notification的各个属性:
Context context = getApplicationContext();
CharSequence contentTitle = "My notification";
CharSequence contentText = "Hello World!";
Intent notificationIntent = new Intent(this, MyClass.class);
PendingIntent contentIntent = PendingIntent.getActivity(this, 0, notificationIntent, 0);
notification.setLatestEventInfo(context, contentTitle, contentText, contentIntent);
Notification提供了丰富的手机提示方式:
a)在状态栏(Status Bar)显示的通知文本提示,如:
notification.tickerText = "hello";
b)发出提示音,如:
notification.defaults |= Notification.DEFAULT_SOUND;
notification.sound = Uri.parse("file:///sdcard/notification/ringer.mp3");
notification.sound = Uri.withAppendedPath(Audio.Media.INTERNAL_CONTENT_URI, "6");
c)手机振动,如:
notification.defaults |= Notification.DEFAULT_VIBRATE;
long[] vibrate = {0,100,200,300};
notification.vibrate = vibrate;
d)LED灯闪烁,如:
notification.defaults |= Notification.DEFAULT_LIGHTS;
或者可以自己的LED提醒模式:
notification.ledARGB = 0xff00ff00;
notification.ledOnMS = 300; //亮的时间
notification.ledOffMS = 1000; //灭的时间
notification.flags |= Notification.FLAG_SHOW_LIGHTS;
* 更多的特征属性
* notification.flags |= FLAG_AUTO_CANCEL; //在通知栏上点击此通知后自动清除此通知
* notification.flags |= FLAG_INSISTENT; //重复发出声音,直到用户响应此通知
* notification.flags |= FLAG_ONGOING_EVENT; //将此通知放到通知栏的"Ongoing"即"正在运行"组中
* notification.flags |= FLAG_NO_CLEAR; //表明在点击了通知栏中的"清除通知"后,此通知不清除,
* //经常与FLAG_ONGOING_EVENT一起使用
* notification.number = 1; //number字段表示此通知代表的当前事件数量,它将覆盖在状态栏图标的顶部
* //如果要使用此字段,必须从1开始
* notification.iconLevel = ; //
*/
//设置通知的事件消息
Context context = getApplicationContext(); //上下文
CharSequence contentTitle = "My Notification"; //通知栏标题
CharSequence contentText = "Hello World!"; //通知栏内容
Intent notificationIntent = new Intent(this,Main.class); //点击该通知后要跳转的Activity
PendingIntent contentIntent = PendingIntent.getActivity(this,0,notificationIntent,0);
notification.setLatestEventInfo(context, contentTitle, contentText, contentIntent);
//把Notification传递给NotificationManager
mNotificationManager.notify(0,notification);
4)发送通知:
private static final int ID_NOTIFICATION = 1;
mNotificationManager.notify(ID_NOTIFICATION, notification);
2. 通知的更新
如果需要更新一个通知,只需要在设置好notification之后,再调用setLatestEventInfo,然后重新发送一次通知即可。
3. 自定义通知视图
这部分可以参考官方文档,讲的很详细了。
AndroidSDK: docs/guide/topics/ui/notifiers/notifications.html
[3] ARM NEON 授命
来源: 互联网 发布时间: 2014-02-18
ARM NEON 指令
在初学NDK时,接触到 HelloNeon例程,了解到 Neon是ARMv7-AR 系列中引入的并行模块,可以让你同时操作8个16位数据或4个32位数据,在信号处理,图像处理,视频编解码优化方面有很高的应用价值。在本文中罗列一些信息,供以后参考。
NEON 汇编指令一览http://infocenter.arm.com/help/basic/help.jsp?topic=/com.arm.doc.dui0204ic/CJAJIIGG.html
ARM 体系结构参考手册 ARMv7-A 和 ARMv7-R 版 http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.ddi0406c/index.htmlHelloNeon中FIR滤波器的C语言实现
/* this is a FIR filter implemented in C */ static void fir_filter_c(short *output, const short* input, const short* kernel, int width, int kernelSize) { int offset = -kernelSize/2; int nn; for (nn = 0; nn < width; nn++) { int sum = 0; int mm; for (mm = 0; mm < kernelSize; mm++) { sum += kernel[mm]*input[nn+offset+mm]; } output[nn] = (short)((sum + 0x8000) >> 16); } }HelloNeon中FIR滤波器的Neon实现 (在调用前需要确定芯片支持NEON指令,具体见例程)
void fir_filter_neon_intrinsics(short *output, const short* input, const short* kernel, int width, int kernelSize) { int nn, offset = -kernelSize/2; for (nn = 0; nn < width; nn++) { int mm, sum = 0; int32x4_t sum_vec = vdupq_n_s32(0); for(mm = 0; mm < kernelSize/4; mm++) { int16x4_t kernel_vec = vld1_s16(kernel + mm*4); int16x4_t input_vec = vld1_s16(input + (nn+offset+mm*4)); sum_vec = vmlal_s16(sum_vec, kernel_vec, input_vec); } sum += vgetq_lane_s32(sum_vec, 0); sum += vgetq_lane_s32(sum_vec, 1); sum += vgetq_lane_s32(sum_vec, 2); sum += vgetq_lane_s32(sum_vec, 3); if(kernelSize & 3) { for(mm = kernelSize - (kernelSize & 3); mm < kernelSize; mm++) sum += kernel[mm] * input[nn+offset+mm]; } output[nn] = (short)((sum + 0x8000) >> 16); } }
经过一天的学习,将上面的代码中内循环部分改为了汇编代码,性能有一点点的提高。
int sum, mm, sum_buf[4]={1,4,9,16}; asm( "MOV r6, %1 \n" "MOV r3, %3 \n" "ADD r2, %2, %4 \n" "ADD r5, %5, r2, LSL #1 \n" "BIC r3, r3, #3 \n" "MOV r2, #0 \n" "VDUP.16 Q8, r2 \n" "loop_mm:\n" "VLD1.16 {D0}, [r6]! \n" "VLD1.16 {D4}, [r5]! \n" "VMLAL.S16 Q8, D0, D4 \n" "ADD r2, r2, #4 \n" "CMP r2, r3 \n" "BNE loop_mm \n" "MOV r2, %0 \n" "VST1.32 {D16-D17}, [r2]" : :"r"(sum_buf),"r"(kernel),"r"(nn),"r"(kernelSize),"r"(offset),"r"(input) :"memory","r1","r2","r3","r4","r5","r6" ); sum = sum_buf[0]+sum_buf[1]+sum_buf[2]+sum_buf[3];
输出结果可能如下,下面这个图的数据是我ps出来的,由于台式机不支持NEON指令(除非你开发用的电脑是用ARM芯片 :-P),模拟器上输出的实际数据要么更慢,要么报告Not an ARMv7 CPU !
最新技术文章: