Mehmet Ethem SULAN :: Android :: Android status bar notification and multi language sample

Android ile Notification oluşturmaya çalıştım. Start buttonuna basınca create ediyor ve stop buttonuna basınca kapatiyor.

Bir de açılırken titreşim(vibrate) olmasını istiyorum. Bunun için AndroidManifest.xml içinde izin vermeniz gerekiyor.

 <uses-permission android:name="android.permission.VIBRATE"></uses-permission> 

Bir uygulamanın multi language olmasını sağlamak için values folderlarını eklemeniz lazım. Default olarak ingilizcedir. Aşağıdaki resimde ben Türkçe ekledim. values-tr şeklinde. Buttonların text değerleri atanırken Android cihazınızın dili Türkçe ise Türkçe olan values-tr altındaki strings.xml içindeki değerler atanıyor ama diğer dillerden biri ise Ingilizce ataniyor. Mesela Japonca eklemek için de values-ja altında values-tr ve values altındaki strings.xml içindeki değerlerin japoncalarını yazmanız lazım.

NotificationBarActivity.java

package com.notification.sample;

import android.app.Activity;
import android.app.Notification;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

public class NotificationBarActivity extends Activity {
    
	private Button button_start, button_stop;
	private  int notifi_id=17;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        button_start=(Button) findViewById(R.id.button1_start);
        button_stop=(Button) findViewById(R.id.button2_stop);
        button_start.setOnClickListener(start);
        button_stop.setOnClickListener(stop);
    }
    OnClickListener stop=new OnClickListener() {
		
		@Override
		public void onClick(View v) {
			close_notify();
			
		}
	};
    OnClickListener start=new OnClickListener() {
		
		@Override
		public void onClick(View v) {
//Start tıklandiginda bir notification cikartiyor.
			create_notify();
			
		}

	};

	
	private void create_notify() {
		String ns=Context.NOTIFICATION_SERVICE;
		NotificationManager notMan=(NotificationManager) getSystemService(ns);
		int icon=R.drawable.icon;
		CharSequence tickerText="Android Notificaion";
		long when=java.lang.System.currentTimeMillis();
		Notification notification=new Notification(icon, tickerText, when);
		Context context=getApplicationContext();
		CharSequence contentTitle="Android";
		CharSequence contentText="I want to learn Android";
//Notification NotificationBarActivity activityde goruntulenir
		Intent notifiaction_intent=new Intent(getBaseContext(), NotificationBarActivity.class);
//PendingIntent android içinde uygun bir bileşen tarafından alınmayana kadar saklanılırlar. 
//Normal intentlerde böyle bir şey yok. Intenti karşılayan bir alıcı olmadığında kaydedilmezler.
		PendingIntent contentIntent=PendingIntent.getActivity(this, 0, notifiaction_intent, 0);
		notification.setLatestEventInfo(context, contentTitle, contentText, contentIntent);
//Titreşim oluşturuyor. Bunun için AndroidManifest.xml içinde izin vermeniz lazım.
		notification.vibrate=new long[]{200,300};
		notMan.notify(notifi_id, notification);
		
	}
	
	
	private void close_notify()
	{
		NotificationManager notificationManager=(NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
//Bu id ye ait olan notificationu kapatiyor.
		notificationManager.cancel(notifi_id);
	}

}

android:text=”@string/start” ve android:text=”@string/stop” ile telefonuzun dili ne ise o dildeki text değerini buttona atiyor.

Bunun yerine

notification.vibrate=new long[]{200,300}; 

aşağıdaki kod satırını yazarsanız da olur. Yani bu satırı silip aşağıdaki kod satırını yazarsanız aynı işlevi görür.

 ((Vibrator)getSystemService(VIBRATOR_SERVICE)).vibrate(600); 

main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
    <Button 
    android:id="@+id/button1_start" 
    android:layout_height="wrap_content" 
    android:text="@string/start" 
    android:layout_width="match_parent">
    </Button>
    <Button 
    android:id="@+id/button2_stop" 
    android:layout_height="wrap_content" 
    android:text="@string/stop" 
    android:layout_width="match_parent">
    </Button>
</LinearLayout>

AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
      package="com.notification.sample"
      android:versionCode="1"
      android:versionName="1.0">
      
<uses-permission android:name="android.permission.VIBRATE"></uses-permission>


    <application android:icon="@drawable/icon" android:label="@string/app_name">
        <activity android:name=".NotificationBarActivity"
                  android:label="@string/app_name">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

    </application>
</manifest>

values–>strings.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="app_name">NotificationBar</string>
    <string name="start">Start Notification</string>
    <string name="stop">Stop Notification</string>
</resources>

values-tr–>strings.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="start">Bildirimi Baslat</string>
    <string name="stop">Bildirimi Durdur</string>
    
</resources>

Download NotificationBar.tar.gz

Comments

There are 4 comments for this post.

  1. dosya silinmiş on Mart 5, 2012 4:42 pm

    dosya silinmiş tekrar yüklermisinz?

  2. ethemsulan on Mart 7, 2012 12:50 pm

    Bütün dosyalar silinmiş. Müsait olduğumda likleri güncellerim. Hotfile neden böyle yaptığını anlamadım. Hesap açıp yüklemiştim ama yine de silmişler…

  3. Aydın on Kasım 12, 2012 8:40 am

    Hocam merhaba,
    Konuyla ilgili bir soru sormak istiyorum. Sizden önce çok araştırdım ama bulamadım. Yardımcı olabilirseniz sevinirim.
    Çoklu dil desteği ile ilgili olarak; telefon dil ayarı değiştiğinde yazdığınız programında (eklediğimiz dil seçeneği kadar) dil ayarınında değişmesiyle ilgili bir dünya örnek var. Ama benim sormak istediğim telefon dil ayarını değiştirmeden program içinde eklediğim dil seçenekleri içinde programın dilini değiştirmek.
    Bunu nasıl yapabiliriz bir örnek yapmanız yada benim internette arayıpta bulamadığım bir döküman göstermeniz mümkün mü?
    ilginiz için şimdiden teşekkürler…

  4. Aydın on Kasım 23, 2012 12:57 pm

    Hocam anlaşılan cevap vermeyeceksiniz. Yine de teşekkürler…

Write a Comment

Let me know what you think?