构建通知栏
private void sendNotification() {
notificationManager = (NotificationManager)getSystemService(Context.NOTIFICATION_SERVICE);//通知管理器
RemoteViews contentView = new RemoteViews(getPackageName(), R.layout.view_custom_button);//远程视图
// 设置远程视图中的控件内容
contentView.setImageViewResource(R.id.notify_music_icon, R.mipmap.app_icon);
contentView.setTextViewText(R.id.txt_notify_Title,"标题" );
Intent pauseIntent = new Intent(this, MyReceiver.class);//intent是一个广播类对象
pauseIntent.setAction("NOTIFY_PAUSE");//设置动作
PendingIntent pausePendingIntent = PendingIntent.getBroadcast(this, 0, pauseIntent, 0);//pendingIntent得到广播
contentView.setOnClickPendingIntent(R.id.btn_notify_pause, pausePendingIntent);//设置按钮成带PendingIntent的可点击按钮
Intent nextIntent = new Intent(this, MyReceiver.class);
nextIntent.setAction("NOTIFY_NEXT");
PendingIntent nextPendingIntent = PendingIntent.getBroadcast(this, 0, nextIntent, 0);
contentView.setOnClickPendingIntent(R.id.btn_nitify_exit, nextPendingIntent);
//如果api版本11(android 3.0)以上按钮才显示
if (Build.VERSION.SDK_INT >= 11) {
contentView.setViewVisibility(R.id.btn_notify_pause, View.VISIBLE);
contentView.setViewVisibility(R.id.btn_notify_next, View.VISIBLE);
contentView.setViewVisibility(R.id.btn_nitify_exit, View.VISIBLE);
}
//3
Notification notification = new Notification(R.mipmap.app_icon, "法律家来消息了", System.currentTimeMillis()); //实例化通知对象
// 绑定远程视图
notification.contentView = contentView;
// 4.定义 PendingIntent并绑定
Intent notificationIntent = new Intent(this, MainActivity.class);
notification.contentIntent = PendingIntent.getActivity(this, 0, notificationIntent, 0);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
notification.bigContentView=contentView;
}
notification.contentIntent =pausePendingIntent;// 绑定 PendingIntent
// notification.flags = Notification.FLAG_NO_CLEAR;// 设置不可取消
// 5 发通知
notificationManager.notify(1, notification);
}
xml文件
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/RelativeLayout1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/lavenderblush"
>
<ImageView
android:layout_gravity="center_vertical"
android:id="@+id/notify_music_icon"
android:layout_width="100dp"
android:layout_height="100dp"
android:src="@mipmap/app_icon" />
<LinearLayout
android:layout_width="120dp"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical">
<TextView
android:id="@+id/txt_notify_Title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingTop="3dp"
android:text="您正在使用法律家APP语音服务,可操作右边按钮控制进程"
android:textColor="@color/black" />
</LinearLayout>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:gravity="center_vertical"
android:orientation="vertical">
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_marginLeft="20dp"
android:layout_marginTop="10dp"
android:gravity="center_vertical">
<ImageView
android:id="@+id/btn_nitify_exit"
android:layout_width="40dp"
android:layout_height="40dp"
android:layout_gravity="center_vertical"
android:layout_marginRight="15dp"
android:background="@mipmap/play"
android:clickable="true"
android:gravity="center_vertical" />
<ImageView
android:id="@+id/btn_notify_pause"
android:layout_width="40dp"
android:layout_height="40dp"
android:layout_centerVertical="true"
android:layout_gravity="center_vertical"
android:layout_marginRight="3dp"
android:layout_toLeftOf="@+id/btn_notify_next"
android:background="@mipmap/stop"
android:clickable="true" />
</LinearLayout>
</LinearLayout>
</LinearLayout>
还有一个广播
public class MyReceiver extends BroadcastReceiver {
private Voice_BroadcaseUtil util; //调用
private Context context;
private NotificationManager notificationManager;
public MyReceiver() {
}
@Override
public void onReceive(Context context, Intent intent) {
util=new Voice_BroadcaseUtil(context);
String action = intent.getAction();
if ("NOTIFY_PAUSE".equals(action)) {
util.toVoiceSpeakPaused();
}
if ("NOTIFY_NEXT".equals(action)) {
util.toVoiceSpeakResumed();
}
if ("NOTIFY_EXIT".equals(action)) {
}
}
public void onReceive(Context context, Intent intent, String string, int id) {
util=new Voice_BroadcaseUtil(context);
notificationManager = (NotificationManager) context.getSystemService(NOTIFICATION_SERVICE);
String action = intent.getAction();
if ("NOTIFY_NEXT".equals(action)) {
util.toVoiceStartSpeak(string);
}
if ("NOTIFY_PAUSE".equals(action)) {
util.toVoiceSpeakPaused();
}
if ("NOTIFY_CLOSE".equals(action)) {
System.out.println("xxxxx");
notificationManager.cancel(id);
}
}
}
花式TextView
textView.setText(Html.fromHtml("<p>为您找到<p><font color=\"red\">" + "100" + "</p>个相关结果</p>"));//使用HTML语言写的不常见,记住了!
刷新装载数据
@Override
protected void addArrayListData(Laws_ResponseData response) {
if (response != null) {
if (response.objs.size() > 0) {
setArrayListData(response.objs);
setDataItemCount(10);
} else {
}
}
}
这样就完成了一个带有Button控件的通知栏,可以随意定义播放的是科大讯飞的语音。也可以播放其他文件,实测不错