3 Nisan 2018 Salı

adb komutu

Giriş
Android Debug Bridge anlamına gelir.

activity manager seçeneği
-n için açıklama şöyle
-n component
Specify the component name with package name prefix to create an explicit intent, such as com.example.app/.ExampleActivity.
Bir activity başlatmak için şöyle yaparız.
adb shell am start -n <PackageName>/<ActivityName>
devices seçeneği
USB kablo ile bağlı cihazları listeler.

install seçeneği
Seçenekler şöyle
adb install [-lrtsdg] <file>
        - push this package file to the device and install it
         (-l: forward lock application)
         (-r: replace existing application)
         (-t: allow test packages)
         (-s: install application on sdcard)
         (-d: allow version code downgrade (debuggable packages only))
         (-g: grant all runtime permissions)
apk kurmak için şöyle yaparız.
adb install game.apk
1. -r seçeneği
Tekrar apk kurmak için şöyle yaparız. -r seçeneği ile uygulamanın mevcut verisi silinmez
adb install -r game.apk
Şöyle yaparız.
adb -s 192.168.1.77:5555 install -r /path/to/android-debug.apk
reboot seçeneği
Cihazı tekrar başlatır.

uninstall seçeneği
uygulama kaldırmak için şöyle yaparız
adb -s 192.168.1.77:5555 uninstall com.myApp.app
shell seçeneği
Kabuğu kullanarak bir komut çalıştırır.

Kurulu uygulamaları görmek için şöyle yaparız.
adb shell pm list packages 
netcfg komutunu çalıştırmak için şöyle yaparız.
adb shell netcfg | grep wlan0

29 Mart 2018 Perşembe

ObjectAnimator Sınıfı

Giriş
Animators API ile geliyor.

ofInt metodu
Şöyle yaparız.
// "ball" means, that Animators API will search for `public setBall(int)` method inside
// MyView.java and call that method
ObjectAnimator ball = ObjectAnimator.ofInt(myView, "ball", 20, 100);
ball.setDuration(1000);
ball.start();

Build Sınıfı

Giriş
Şu satırı dahil ederiz.
import android.os.Build;
VERSION Alanı
Şöyle yaparız.
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR2 && 
    Build.VERSION.SDK_INT < android.os.Build.VERSION_CODES.LOLLIPOP) {

  // write your code here which should work for version between 18 and 21.
}
else if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP)
{ 
  // write the alternate code for API 21+
}
Şöyle yaparız.
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
  ...
} else {
  ...
}
VERSION_CODES Alanı
JELLY_BEAN_MR2 = API 18
LOLLIPOP = API 21
O = Oreo API 26


25 Mart 2018 Pazar

BroadcastReceiver Sınıfı

Giriş
Şu satırı dahil ederiz.
import android.content.BroadcastReceiver;
BroadcastReceiver sistem veya uygulama olaylarını işlemek için kullanılır.

onReceive metodu 
Bu metod çok uzun çalışmamalıdır. Açıklaması şöyle.
When it runs on the main thread you should never perform long-running operations in it (there is a timeout of 10 seconds that the system allows before considering the receiver to be blocked and a candidate to be killed).
onReceive Intent parametresi
XML içinde action belirtsek bile kontrol etmek için kullanılır.
@Override
public void onReceive(Context context, Intent intent) {
  if (Telephony.Sms.Intents.SMS_RECEIVED_ACTION.equals(intent.getAction())) {
    ...
  }
}
Diğer

Kullanım
İki şekilde kullanılabilir.

1. Manifest içinde.
Bu durumda BroadcastReceiver nesnesini unregister etmeye gerek yoktur.

2. Activity içinde
Activity onResume(), onCreate() metodları içinde register edilir.
onDestroy() metodunda unregister edilir.

Tanımlama
Şöyle yaparız
BroadcastReceiver receiver= new BroadcastReceiver() {
  @Override
  public void onReceive(Context context, Intent intent) {
    // do your stuff here

  }
};
1. Manifest İçinde Tanımlama
Şöyle yaparız.
<receiver android:name="com.domain.app.">
    <intent-filter>
        <action android:name="android.intent.action.XYZ" />
    </intent-filter>
</receiver>
Action alanı bazen bir provider olabilir.
<receiver android:name=".SmsListener">
  <intent-filter android:priority="2147483647">
    <action android:name="android.provider.Telephony.SMS_RECEIVED" />
  </intent-filter>
</receiver>

2. Activity İçinde Tanımlama
Örnek
Sınıfımız şöyle register edilir.
registerReceiver(myReceiver, new IntentFilter(...));
Şöyle unregister edilir.
unregisterReceiver(myReceiver);
Örnek
onCreate() metodunda şöyle yaparız.
registerReceiver(this.broadCastNewMessage, new IntentFilter("bcNewMessage"));
onDestroy() içinde şöyle yaparız.
unregisterReceiver(broadCastNewMessage);
Service sınıfında şöyle yaparız.
sendBroadcast(new Intent().setAction("bcNewMessage"));
Wifi Taraması İçin Kullanımı
Wifi Taraması sonuçlarını almak için kullanılabilir.

Alarm İçin Kullanımı
BroadcastReceiver sınıfı AlarmManager ile beraber kullanılarak belli bir saatte bir iş yapmak için kullanılabilir.

Intent intent = new Intent(context, MyBroadcastReceiver.class);
PendingIntent recurring = PendingIntent.getBroadcast(...);
AlarmManager alarms = (AlarmManager) getSystemService(...);
alarms.setRepeating(...);
AlarmManager şöyle kullanılır. Önce ne zaman çalışmasını istediğimizi ve aralığını kodlarız.
Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(System.currentTimeMillis());
calendar.set(Calendar.HOUR_OF_DAY, 6);
calendar.set(Calendar.MINUTE, 0);
int interval = 1000 * 60 * 60 * 24;
Daha sonra alarmı kurarız.
/* Repeating on every 24 hours interval */
AlarmManager alarmManager = (AlarmManager)getSystemService(ALARM_SERVICE);
alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(),
                          interval, recurring);
Boot İçin Kullanımı
Boot yazısına taşıdım.

SMS okumak için Kullanımı
SMSMessage yazısına taşıdım.