2013-06-08 15 views
5

を動作していませんしかし、通知自体は表示されません、任意のヘルプのペースト?アンドロイド通知大きな画像は、私はこのように私の通知を作成してい

+1

このコードを<3.0アンドロイドOSで実行しようとしている場合、そのコードは動作しません。 Mean NotificationCompatは> 11 APIで動作します。 –

+0

私は2.3をサポートv4で使用していますが、コードは機能していますが、大きなアイコンは機能しません。 –

+0

サポートv4ではNotificationCompat.Builderのサポートがありません。ソートでは<11 Android APIでこれを行うことはできません(私はあなたの問題を理解していますが、この方法を使用できます - > http://stackoverflow.com/a/8869647/1168654) –

答えて

7

Androidアイコン(ドラッグの長さなどの他のUI要素)はdpで測定されます。 dpはデバイス/密度に依存しないピクセルです。 1 dpは160 dpiの画面で1 pxに相当します。しかし、他のスクリーン密度に変換するには、それを密度係数で乗算する必要があります。一般に、ほとんどのアイコンには複数の画像が提供されることが推奨されています。

たとえば、ステータスバーで使用される通知アイコンは、1 dpのマージンを持つ24x24 dpと指定されています(実際のアイコンは22x22 dpの光学正方形しか使用しませんが、 DPマージン/セーフフレーム)。 tvdpi MDPIとhdpiの間に位置し、1.33のスケールファクタを有する(〜213 DPI)と呼ばれる中間表示濃度もあります

display density dp units * scale = px units 
ldpi ~120 dpi 24x24 dp * .75 = 18x18 px 
mdpi ~160 dpi 24x24 dp * 1.0 = 24x24 px 
hdpi ~240 dpi 24x24 dp * 1.5 = 36x36 px 
xhdpi ~320 dpi 24x24 dp * 2.0 = 48x48 px 

、しかし:実際のピクセルサイズに24 DPに変換するために、これらの粗い計算が使用されていますこれはあまり一般的ではありません。 Androidのドキュメントで推奨されていることは、最も一般的な表示濃度でプリスケールされたビットマップ画像(通常はPNG)を提供するときに、3:4:6:8の比率に従うことです。

通知で使用される大きなアイコンのdpサイズを指定する場所は表示されませんが、通常の受信トレイビューの各通知の高さは64 dpです。 、

ldpi:  48x48 px 
mdpi:  64x64 px 
hdpi:  96x96 px 
xhdpi: 128x128 px 

あなたは、Androidの株式のアイコンが表示された画像は、サイズを正確に知りたい場合は、Androidのアイコンテンプレートパックから見つけることができるはずです:だからそれはあるだろう示すアイコン/画像の最大サイズを意味し、 v4.0。

1

私はあなたがこのように、Builderでそれを尋ねる前に、ビットマップをデコードする必要があると思う:

Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.unknown); 
Intent intent = new Intent(this, OfferNotification.class); 
     PendingIntent pIntent = PendingIntent.getActivity(this, 0, 
       intent, 0); 
     Uri soundUri = RingtoneManager 
       .getDefaultUri(RingtoneManager.TYPE_NOTIFICATION); 
     NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(
       this).setSmallIcon(R.drawable.unknown) 
       //.setLargeIcon(bitmap) 
       .addAction(R.drawable.ic_launcher, "d", pIntent) 
       .setAutoCancel(true) 
       .setContentTitle("Offer from " + restaurantName) 
       .setContentText(offerDescriptoin).setSound(soundUri); 

それはおそらく適切または時間内にデコードされていません。ここで未知のものも取り除くだろう。

+0

私はurソリューションを試しました、私はまだ大声アイコンを使用すると音声を髪にすることができます –

+0

このコードは単一のスレッド(UIルーパー)で実行されています。競争条件はありません。 'setLargeIcon'メソッドはコメントアウトされているようです。 –

+0

違いはありません – bendaf

3

私はSetSmallIconとSetLargeIconの呼び出しを誤って解釈したのと同じ問題がありました。 小さなアイコンを指定する必要があります。そうでない場合、通知は表示されません。大きなアイコンはオプションで、設定されていない場合は小さいアイコンが使用されます。

+0

ありがとうございます。これは私を助けた。 –

関連する問題