首页 > 代码库 > 0号首页,移动应用快捷门户

0号首页,移动应用快捷门户

0号首页,移动应用快捷门户

我们已有的应用,都将Android通知栏作为“传统的通知”用途,比如短信,微信,QQ都在这样使用。不过,同样的区域,也有创新的使用方式,比如最早的音乐播放控制,现在的360智键,百度搜索都开始占领通知栏,作为其应用的快捷入口,见附后图。


Screenshot-2Screenshot-

 

 

 

 

 

 

 

从移动应用的成功程度评价,“占领手机的前三屏”,到现在安装了大量应用App后,其实除了常用的几个,其余都在沉睡冰藏,很难主动想起去“找到-点击”的使用过程。

不过,Android3.0以后,有了Ongoing(运行中),可以从技术角度占领用户手机的最快捷入口,实现“0号首页”。作为娱乐工具型应用,SoLoMo的签到(Checkin),LBS类查询,个人记账,还可以提供“富功能方式”的通知提醒和通知提醒的后向操作,一些快捷工具操作。作为企业应用,工单提醒和快捷操作,考勤签到等。

当然,使用这种“占领并强滞留”的方式,首先要保证自己的应用“可用、好用”,或者是工作/企业应用的“必须使用”,否则被人讨厌的流氓类应用去占领就适得其反,让人更快速下载了。

技术实现

Android在新版的通知提醒服务中,增加了Ongoing选项,Notification.FLAG_ONGOING_EVENT,实现“在运行”的通知提醒,也就是可以常驻在通知栏,实现“永远的通知”,并在通知上附加其它操作。

关于“其它操作”,作为信息系统常用的按钮、文本、图片、列表等都可以添加展示。使用RemoteViews机制在“0号首页”区域实现自定义的视图。

Notification的自定义布局是RemoteViews,在自定义视图布局文件中,仅支持FrameLayout、LinearLayout、RelativeLayout三种布局控件和AnalogClock、Chronometer、Button、ImageButton、ImageView、ProgressBar、TextView、ViewFlipper、ListView、GridView、StackView和AdapterViewFlipper这些显示控件,不支持这些类的子类或Android提供的其他控件。

同时,Notification可以组合使用声音、三色灯、振动和屏幕提醒,实现更好的用户体验。

一个参考样例,代码:

public void addOngoingNotify(){NotificationCompat.Builder mBuilder = new Builder(this);RemoteViews mRemoteViews = new RemoteViews(getPackageName(), R.layout.view_notify);

 

mRemoteViews.setImageViewResource(R.id.notify_ongoing_icon_1, R.drawable.notify_ongoing_icon_2);

mRemoteViews.setTextViewText(R.id.txt_label, “远图未来”);

mRemoteViews.setViewVisibility(R.id._notify_button, View.VISIBLE);

mRemoteViews.setImageViewResource(R.id.btn_notify_1, R.drawable.btn_notify_2);

//按钮动作处理

Intent buttonIntent = new Intent(ACTION_BUTTON);

buttonIntent.putExtra(INTENT_BUTTONID_TAG, BUTTON_PREV_ID);

PendingIntent intent_prev = PendingIntent.getBroadcast(this, 1, buttonIntent, PendingIntent.FLAG_UPDATE_CURRENT);

mRemoteViews.setOnClickPendingIntent(R.id.btn_notify_1, intent_prev);

 

mBuilder.setContent(mRemoteViews)

.setContentIntent(getDefalutIntent(Notification.FLAG_ONGOING_EVENT))

.setSmallIcon(R.drawable.notify_ongoing_icon_2)

.setPriority(Notification.PRIORITY_DEFAULT)

.setWhen(System.currentTimeMillis())

.setTicker(“常驻通知@蓄丰实验舱”)

.setOngoing(true);

Notification notify = mBuilder.build();

notify.flags = Notification.FLAG_ONGOING_EVENT;

mNotificationManager.notify(notifyId, notify);

}

 

设置振动:setVibrate(long[] pattern)

设置三色灯:setLights(intledARGB ,intledOnMS ,intledOffMS )

设置声音:setSound(Uri sound)

 

技术支持是基础的,应用场景是充满无限想象力的。从现有的技术解决方案,创新和设计出新的产品或应用方式,是我们最幸福的事。

本文地址,http://blog.xufun.cn/?p=660

0号首页,移动应用快捷门户