6

setOnClick 保留中のインテントを使用してコードを編集しました。このコードは ImageView と通知テキストで必要に応じて機能しますが、まだ助けが必要です。

サービス クラスから mediaplayer を一時停止または再生したいのですが、通知保留インテントからサービスの停止または再生メソッドにアクセスするにはどうすればよいですか?

ブロードキャスト レシーバーが役立つという人もいますが、それがどのように機能するのか正確にはわかりません。通知の一時停止ボタンから Web ブラウザーを開くことはできましたが、サービス メソッドにアクセスする方法がわかりません。サンプルコードがあれば共有してください。

@SuppressWarnings("deprecation")
void showNotification() {
     int pendingRequestCode = 0;
        int pendingFlag = 0;

        final Resources res = getResources();
        final NotificationManager notificationManager = (NotificationManager) getSystemService(
                NOTIFICATION_SERVICE);
        Intent intent = new Intent(this,MainActivity.class);
        PendingIntent pi= PendingIntent.getActivity(this, 0, intent, 0);
        Notification.Builder builder = new Notification.Builder(this)
                .setSmallIcon(R.drawable.ic_action_search)
                .setAutoCancel(true)
                .setTicker("this is notification")
                .setContentIntent(pi);


        // Sets a custom content view for the notification, including an image button.
        RemoteViews layout = new RemoteViews(getPackageName(), R.layout.notification);
        layout.setTextViewText(R.id.notification_title, getString(R.string.app_name));
        Intent clickIntent = new Intent(Intent.ACTION_VIEW, Uri_myBlog);
        PendingIntent pendingIntent = PendingIntent.getActivity(getApplicationContext(),pendingRequestCode,  clickIntent, pendingFlag);
        layout.setOnClickPendingIntent(R.id.notification_button,pendingIntent);
        builder.setContent(layout);

        // Notifications in Android 3.0 now have a standard mechanism for displaying large
        // bitmaps such as contact avatars. Here, we load an example image and resize it to the
        // appropriate size for large bitmaps in notifications.
        Bitmap largeIconTemp = BitmapFactory.decodeResource(res,
                R.drawable.pause);
        Bitmap largeIcon = Bitmap.createScaledBitmap(
                largeIconTemp,
                res.getDimensionPixelSize(android.R.dimen.notification_large_icon_width),
                res.getDimensionPixelSize(android.R.dimen.notification_large_icon_height),
                false);
        largeIconTemp.recycle();

        builder.setLargeIcon(largeIcon);

        notificationManager.notify(NOTIFICATION_DEFAULT, builder.getNotification());
    }

    PendingIntent getDialogPendingIntent(String dialogText) {
        return PendingIntent.getActivity(
                this,
                dialogText.hashCode(), // Otherwise previous PendingIntents with the same
                                       // requestCode may be overwritten.
                new Intent(ACTION_DIALOG)
                        .putExtra(Intent.EXTRA_TEXT, dialogText)
                        .addFlags(Intent.FLAG_ACTIVITY_NEW_TASK),
                0);
    }
4

2 に答える 2

6

どのバージョンの Android をターゲットにするかはおっしゃっていませんでしたが、一般的にはAndroid 3.x (Honeycomb) までは可能ではありません。したがって、それを 2.x で実行したい場合は、申し訳ありません。運が悪いだけです。

Honeycomb の場合、カスタム レイアウトを提供しPendingIntent、 を呼び出して必要な各ボタンに割り当てるだけですsetOnClickPendingIntent()。SDK のサンプルをダウンロードした場合は、HoneycombGallery アプリの MainActivity を参照してください (<SDK>\samples\android-XX\HoneycombGallery\フォルダーにある必要があります。XX は 14 (またはそれ以上) からのものです)。

于 2012-08-31T11:37:02.943 に答える
0

Messenger を使用してバウンド サービスを確認する http://developer.android.com/guide/components/bound-services.html

また、この質問を確認できます Binding to a local Service from a BroadcastReceiver

于 2013-01-31T12:05:05.210 に答える