こんにちは、Android で aac プレーヤー アプリを作成しています。既に次のような通知マネージャーがあります。
Context context = getApplicationContext();
String ns = Context.NOTIFICATION_SERVICE;
int icon = R.drawable.icon;
CharSequence tickerText = "Now playing...";
long when = System.currentTimeMillis();
Notification notification = new Notification(icon, tickerText, when);
CharSequence contentTitle = "My notification";
CharSequence contentText = "txtMetaTitle";
Intent notificationIntent = new Intent(AACPlayerActivity.this, Principal.class);
notification.flags = Notification.FLAG_ONGOING_EVENT;
PendingIntent contentIntent = PendingIntent.getActivity(this,0,notificationIntent,0);
notification.setLatestEventInfo(context, contentTitle, contentText, contentIntent);
NotificationManager mNotificationManager = (NotificationManager) getSystemService(ns);
mNotificationManager.notify(1, notification);
しかし、今はCharSequence contentTitle = "My notifications";のような通常のテキストを挿入しようとしています。代わりに、私の場合、ストリームのshoutcastサーバーからのメタデータである変数を表示します。
ラジオ ステーションを開くと、ステーションのロゴ画像、URL、タイトルが次のコードで表示されます。
public void playerMetadata( final String key, final String value ) {
TextView tv = null;
if ("StreamTitle".equals( key ) || "icy-name".equals( key ) || "icy-description".equals( key )) {
tv = txtMetaTitle;
}
else if ("icy-url".equals( key )) {
tv = txtMetaUrl;
}
else return;
final TextView ftv = tv;
uiHandler.post( new Runnable() {
public void run() {
ftv.setText( value );
}
});
}
たとえば、txtMetaTitleを表示して通知に実装する方法:
CharSequence contentTitle = "My notification";
CharSequence contentText = "txtMetaTitle";
シャウトキャストのメタデータを表示するには?
どうもありがとうございました。
編集:
完全なコード:
private void start() {
stop();
txtMetaTitle.setText("");
txtMetaGenre.setText("");
txtMetaUrl.setText("");
multiPlayer = new MultiPlayer( this, getInt( txtBufAudio ), getInt( txtBufDecode ));
//multiPlayer.playAsync(getUrl());
Log.d(TAG, "onClick: starting srvice");
myIntent = new Intent(this, MyService.class);
myIntent.putExtra("URL", getUrl());
myIntent.putExtra("MP",new Sharable(multiPlayer));
startService(myIntent);
Context context = getApplicationContext();
String ns = Context.NOTIFICATION_SERVICE;
int icon = R.drawable.icon;
CharSequence tickerText = "Now playing...";
long when = System.currentTimeMillis();
Notification notification = new Notification(icon, tickerText, when);
CharSequence contentTitle = "My notification";
CharSequence contentText = txtMetaTitle.getText();
Intent notificationIntent = new Intent(AACPlayerActivity.this, Principal.class);
notification.flags = Notification.FLAG_ONGOING_EVENT;
PendingIntent contentIntent = PendingIntent.getActivity(this,0,notificationIntent,0);
notification.setLatestEventInfo(context, contentTitle, contentText, contentIntent);
NotificationManager mNotificationManager = (NotificationManager) getSystemService(ns);
mNotificationManager.notify(1, notification);
}
この内部で通知サービスを移動するのを修正しました:
public void playerMetadata( final String key, final String value ) {
TextView tv = null;
if ("StreamTitle".equals( key ) || "icy-name".equals( key ) || "icy-description".equals( key )) {
tv = txtMetaTitle;
}
else if ("icy-url".equals( key )) {
tv = txtMetaUrl;
}
else return;
final TextView ftv = tv;
uiHandler.post( new Runnable() {
public void run() {
ftv.setText( value );
System.out.println("Now playing..." + txtMetaTitle.getText().toString());
Context context = getApplicationContext();
String ns = Context.NOTIFICATION_SERVICE;
int icon = R.drawable.icon;
CharSequence tickerText = "Now playing...";
long when = System.currentTimeMillis();
Notification notification = new Notification(icon, tickerText, when);
CharSequence contentTitle = txtMetaTitle.getText().toString();
CharSequence contentText = txtMetaUrl.getText().toString();
Intent notificationIntent = new Intent(AACPlayerActivity.this, Principal.class);
notification.flags = Notification.FLAG_ONGOING_EVENT;
PendingIntent contentIntent = PendingIntent.getActivity(context, 0, notificationIntent, 0);
//PendingIntent contentIntent = PendingIntent.getActivity(this,0,notificationIntent,0);
notification.setLatestEventInfo(context, contentTitle, contentText, contentIntent);
NotificationManager mNotificationManager = (NotificationManager) getSystemService(ns);
mNotificationManager.notify(1, notification);
}
});
}