我有以下服务在我的应用程序中显示通知,到目前为止它显示正常,但它无法以某种方式处理点击事件。我该如何处理这些?
要求:我希望只要视频还在播放,这个通知就会出现。我希望这是做到这一点的方法。
public class CustomNotifications extends Service implements
INotificationService {
private static CustomNotifications instance;
private Context ctx;
private NotificationManager mNotificationManager;
private String start = "play";
private String stop = "stop";
private VideoCastManager mCastManager;
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
if (null != intent) {
String action = intent.getAction();
if (action != null) {
if (action.equals(start)) {
} else if (action.equals(stop)) {
}
}
}
return 1;
}
public void startNofication(Activity activity, String text) {
ctx = this.getApplicationContext();
Intent resultIntent = new Intent(this, FullscreenActivity.class);
PendingIntent resultPendingIntent = PendingIntent.getActivity(this,
0, resultIntent, PendingIntent.FLAG_UPDATE_CURRENT);
NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(
this).setSmallIcon(R.drawable.ic_launcher)
.setContentTitle("Media Cast").setTicker(text)
.setAutoCancel(false).setOngoing(true)
.setContentIntent(resultPendingIntent);
RemoteViews contentView = new RemoteViews(ctx.getPackageName(),
com.me.app.mediacast.R.layout.notification_layout);
contentView.setTextViewText(
com.me.app.mediacast.R.id.notifcation_label, text);
contentView.setImageViewResource(
com.me.app.mediacast.R.id.notification_button,
R.drawable.ic_av_play_dark);
// set the button listeners
setListeners(contentView);
mBuilder.setContent(contentView);
int mNotificationId = 001;
// NotificationManager mNotifyMgr = (NotificationManager) activity
// .getSystemService(activity.NOTIFICATION_SERVICE);
// mNotifyMgr.notify(mNotificationId, mBuilder.build());
startForeground(mNotificationId, mBuilder.build());
}
private void setListeners(RemoteViews contentView) {
Intent radio = new Intent(start);
radio.setPackage(getPackageName());
PendingIntent pRadio = PendingIntent.getActivity(this, 0, radio, 0);
contentView.setOnClickPendingIntent(
com.me.app.mediacast.R.id.notification_button, pRadio);
}
@Override
public boolean stopService() {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean startService(String text) {
startNofication((Activity) ContentHelper.getCurrentActivity(), text);
return true;
}
@Override
public IBinder onBind(Intent intent) {
// TODO Auto-generated method stub
return null;
}
@Override
public void onCreate() {
super.onCreate();
try {
mCastManager = VideoCastManager.getInstance();
} catch (CastException e) {
e.printStackTrace();
}
mCastManager.setNottificationService(this);
mCastManager.startNotificationService();
}
}
以下是布局xml。
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/black" >
<TextView
android:id="@+id/notifcation_label"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_toLeftOf="@+id/btn1" />
<TextView
android:id="@+id/notifcation_subtext"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_below="@+id/notifcation_label" />
<ImageButton
android:id="@+id/notification_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_alignParentTop="true"
android:layout_margin="10dp"
android:layout_marginRight="19dp" />
</RelativeLayout>
我只是想让这个点击甚至处理,所以我可以显示按钮切换以暂停或播放,具体取决于应用程序的状态。
提前感谢您查看此内容。
最佳答案
我已经在“服务”中使用以下方法解决了这个问题。也不要忘记在 list 文件中添加 Intent 过滤器。
Intent resultIntent = new Intent(this, FullscreenActivity.class);
resultIntent.setAction(Intent.ACTION_MAIN);
resultIntent.addCategory(Intent.CATEGORY_LAUNCHER);
PendingIntent pintent = PendingIntent.getActivity(ctx, 0, resultIntent,
0);
PendingIntent pendingIntent = null;
Intent intent = null;
// Inflate a remote view with a layout which you want to display in the
// notification bar.
if (mRemoteViews == null) {
mRemoteViews = new RemoteViews(getPackageName(),
R.layout.custom_notification);
}
/**
* add handlers to the buttons
*
*/
Uri uri = info.getMetadata().getImages().get(0).getUrl();
Bitmap bmp = null;
if (uri != null) {
URL url;
try {
url = new URL(uri.toString());
bmp = BitmapFactory.decodeStream(url.openStream());
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
}
if (bmp != null) {
mRemoteViews.setImageViewBitmap(R.id.iconView, bmp);
}
if (isPlaying) {
mRemoteViews.setImageViewResource(R.id.playPauseView,
R.drawable.ic_av_pause_sm_dark);
} else {
mRemoteViews.setImageViewResource(R.id.playPauseView,
R.drawable.ic_av_play_sm_dark);
}
mRemoteViews.setTextViewText(R.id.titleView, info.getMetadata()
.getString(MediaMetadata.KEY_TITLE));
intent = new Intent(play);
pendingIntent = PendingIntent.getService(getApplicationContext(),
REQUEST_CODE_STOP, intent, PendingIntent.FLAG_UPDATE_CURRENT);
mRemoteViews.setOnClickPendingIntent(R.id.playPauseView, pendingIntent);
Intent destroy = new Intent(stop);
PendingIntent pendingIntent1 = PendingIntent.getService(
getApplicationContext(), REQUEST_CODE_STOP, destroy,
PendingIntent.FLAG_UPDATE_CURRENT);
mRemoteViews.setOnClickPendingIntent(R.id.removeView, pendingIntent1);
/**
*
*
*/
// Create the notification instance.
mNotification = new NotificationCompat.Builder(getApplicationContext())
.setSmallIcon(R.drawable.ic_launcher).setOngoing(true)
.setWhen(System.currentTimeMillis()).setContent(mRemoteViews)
.setContentIntent(pintent).build();
mNotifiManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
mNotifiManager.notify(NOTIFICATION_ID, mNotification);
安卓 list
<intent-filter>
<action android:name="com.me.app.mediacast.PLAY" />
<action android:name="com.me.app.mediacast.PAUSE" />
<action android:name="com.me.app.mediacast.STOP" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
关于android - 带按钮的通知不处理事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26199594/
大约一年前,我决定确保每个包含非唯一文本的Flash通知都将从模块中的方法中获取文本。我这样做的最初原因是为了避免一遍又一遍地输入相同的字符串。如果我想更改措辞,我可以在一个地方轻松完成,而且一遍又一遍地重复同一件事而出现拼写错误的可能性也会降低。我最终得到的是这样的:moduleMessagesdefformat_error_messages(errors)errors.map{|attribute,message|"Error:#{attribute.to_s.titleize}#{message}."}enddeferror_message_could_not_find(obje
Rackup通过Rack的默认处理程序成功运行任何Rack应用程序。例如:classRackAppdefcall(environment)['200',{'Content-Type'=>'text/html'},["Helloworld"]]endendrunRackApp.new但是当最后一行更改为使用Rack的内置CGI处理程序时,rackup给出“NoMethodErrorat/undefinedmethod`call'fornil:NilClass”:Rack::Handler::CGI.runRackApp.newRack的其他内置处理程序也提出了同样的反对意见。例如Rack
是否有简单的方法来更改默认ISO格式(yyyy-mm-dd)的ActiveAdmin日期过滤器显示格式? 最佳答案 您可以像这样为日期选择器提供额外的选项,而不是覆盖js:=f.input:my_date,as::datepicker,datepicker_options:{dateFormat:"mm/dd/yy"} 关于ruby-on-rails-事件管理员日期过滤器日期格式自定义,我们在StackOverflow上找到一个类似的问题: https://s
有人知道在发布新版本的Ruby和Rails时收到电子邮件的方法吗?他们有邮件列表,RubyonRails有一个推特,但我不想听到那些随之而来的喧嚣,我只想知道什么时候发布新版本,尤其是那些有安全修复的版本。 最佳答案 从therailsblog获取提要.http://weblog.rubyonrails.org/feed/atom.xml 关于ruby-on-rails-如何在发布新的Ruby或Rails版本时收到通知?,我们在StackOverflow上找到一个类似的问题:
最近因为项目需要,需要将Android手机系统自带的某个系统软件反编译并更改里面某个资源,并重新打包,签名生成新的自定义的apk,下面我来介绍一下我的实现过程。APK修改,分为以下几步:反编译解包,修改,重打包,修改签名等步骤。安卓apk修改准备工作1.系统配置好JavaJDK环境变量2.需要root权限的手机(针对系统自带apk,其他软件免root)3.Auto-Sign签名工具4.apktool工具安卓apk修改开始反编译本文拿Android系统里面的Settings.apk做demo,具体如何将apk获取出来在此就不过多介绍了,直接进入主题:按键win+R输入cmd,打开命令窗口,并将路
我正在尝试将以下SQL查询转换为ActiveRecord,它正在融化我的大脑。deletefromtablewhereid有什么想法吗?我想做的是限制表中的行数。所以,我想删除少于最近10个条目的所有内容。编辑:通过结合以下几个答案找到了解决方案。Temperature.where('id这给我留下了最新的10个条目。 最佳答案 从您的SQL来看,您似乎想要从表中删除前10条记录。我相信到目前为止的大多数答案都会如此。这里有两个额外的选择:基于MurifoX的版本:Table.where(:id=>Table.order(:id).
我希望用户从一个模型的三个选项中选择一个。即我有一个模型视频,可以被评为正面/负面/未知目前我有三列bool值(pos/neg/unknown)。这是处理这种情况的最佳方式吗?为此,表单应该是什么样的?目前我有类似的东西但显然它允许多项选择,而我试图将它限制为只有一个..怎么办? 最佳答案 如果要使用字符串列,让我们说rating。然后在你的表单中:#...#...它只允许一个选择编辑完全相同但使用radio_button_tag: 关于ruby-on-rails-Rails单选按钮-模
这是我在ActiveAdmin中的自定义页面ActiveAdmin.register_page"Settings"doaction_itemdolink_to('Importprojects','settings/importprojects')endcontentdopara"Text"endcontrollerdodefimportprojectssystem"rakedataspider:import_projects_ninja"para"OK"endendend我想做的是,当我单击“导入项目”按钮时,我想在Controller中执行rake任务。但是我无法访问该方法。可能是什
我对图像处理完全陌生。我对JPEG内部是什么以及它是如何工作一无所知。我想知道,是否可以在某处找到执行以下简单操作的ruby代码:打开jpeg文件。遍历每个像素并将其颜色设置为fx绿色。将结果写入另一个文件。我对如何使用ruby-vips库实现这一点特别感兴趣https://github.com/ender672/ruby-vips我的目标-学习如何使用ruby-vips执行基本的图像处理操作(Gamma校正、亮度、色调……)任何指向比“helloworld”更复杂的工作示例的链接——比如ruby-vips的github页面上的链接,我们将不胜感激!如果有ruby-
我有一个super简单的脚本,它几乎包含了FayeWebSocketGitHub页面上用于处理关闭连接的内容:ws=Faye::WebSocket::Client.new(url,nil,:headers=>headers)ws.on:opendo|event|p[:open]#sendpingcommand#sendtestcommand#ws.send({command:'test'}.to_json)endws.on:messagedo|event|#hereistheentrypointfordatacomingfromtheserver.pJSON.parse(event.d