21 Mart 2018 Çarşamba

SQLiteDatabase Sınıfı

Giriş
Şu satırı dahil ederiz.
import android.database.sqlite.SQLiteDatabase;
Açıklaması şöyle.
Android wraps the SQLite code and export some java interface (android.database.sqlite.SQLiteDatabase), but miss some advanced features from the original SQLite implementation

1.Custom Function
2.Encryption
3.URI file syntax
4.VFS
Dosya Nerede Olmalı
Sqlite verisinin Android Studio projelerin asset dizini altında olması tavsiye ediliyor.
+ main
++ assets
+++ db.sqlite <----
++ java
++ res
Yanlışlıkla res dizini altına konabilir. res dizini altında assets diye bir şey yok.
+ res
++ drawable
++ layout
++ menu
++ mipmap
++ values
constructor
SQLiteOpenHelpersınıfından kalıtan bir sınıf içinde şöyle yaparız
SQLiteDatabase db = getWritableDatabase ()
beginTransaction-endTransaction metodları
Açıklaması şöyle
The changes will be rolled back if any transaction is ended without being marked as clean (by calling setTransactionSuccessful).
Basit bir örnek
SQLiteDatabase db = ...
db.beginTransaction();
db.execSQL("ALTER TABLE ...");
db.setTransactionSuccessful();
db.endTransaction();
close metodu
Şöyle yaparız.
if(db.isOpen())
  db.close();
compileStatement metodu
Bir PreparedStatement oluşturur. Şöyle yaparız.
String sql = "...";
SQLiteStatement insert = db.compileStatement(sql);
execSQL metodu
Verilen SQL'i çalıştırır. Örneğin tablo yaratmak için kullanabiliriz.
SQLiteDatabase db = ...
db.execSQL("CREATE TABLE IF NOT EXISTS users_table (name TEXT, last TEXT)");
Satır eklemek için kullanabiliriz.
db.execSQL("INSERT INTO users_table VALUES('" + name + "','" + last + "'");
getMaximumSize metodu
Metodun içi şöyle. Sanırım teorik bir limit dönüyor.
public long getMaximumSize() {
  long pCount = DatabaseUtils.longForQuery(this, "PRAGMA max_page_count;", null);
 return pCount * getPageSize();
}
insert metodu
Şu satırı dahil ederiz.
import android.content.sqlite.ContentValues;
ContentValues nesnesinin değerleri ile satır yaratır. İşlem başarısız ise -1 döner. Başarılı ise RowID döner. Eğer RowID autogenerated ise değeri 1'den başlar.
ContentValues values = new ContentValues();
values.put(KEY_PRODUCT_TYPE, code);
values.put(KEY_PRODUCT_QUANTITY, continent);
values.put(KEY_PRODCUT_COST, region);

long rowId = db.insert (SQLITE_TABLE, null, values);

isOpen metodu
Şöyle yaparız.
if(db.isOpen())
  db.close();
query metodu
Şöyle bir sorgu çalıştırmak isteyelim.
SELECT * FROM Customers
WHERE City LIKE '%XXXX%';
Şöyle yaparız. Parametreler sırasıyla şöyledir.table, columns, selection, selectionArgs, groupBy, having, orderBy, limit
Cursor cursor = db.query("Customers",
  null, "City LIKE ?", new String[] { "%" + name + "%" }, 
  null,
  null,
  null);
rawQuery metodu
Cursor almak için kullanılabilir.
String selectQuery = "SELECT * FROM ...";
SQLiteDatabase db = ...
Cursor cursor = db.rawQuery(selectQuery, null);
setTransactionSuccessful metodu
Şöyle yaparız.
SQLiteDatabase db = 
db.beginTransaction();
...
db.setTransactionSuccessful();
db.endTransaction();


SpannableString Sınıfı

Giriş
Şu satırları dahil ederiz.
import android.text.Spannable;
import android.text.SpannableString;
Spannable arayüzünden kalıtır. setSpan() metodu ile yerlere ImageSpan, StyleSpan,UnderlineSpan gibi farklı özellikler verebilmeyi sağlar.

Kullanım
Şöyle yaparız.
TextView tv = (TextView) view.findViewById(R.id.tv);
SpannableString ss = ..;
...
tv.setText (content);
Şöyle yaparız.
EditText edt = (EditText )findViewById(R.id.tv);
Spannable ss = ...
...
edt.setText (ss);
constructor
Şöyle yaparız.
SpannableString ss = new SpannableString("..."); 
setSpan metodu - AlignmentSpan
Belirtilen aralığı sağa yaslamak için şöyle yaparız.
ss.setSpan((new AlignmentSpan.Standard(Alignment.ALIGN_OPPOSITE),3,5,
  Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
setSpan metodu - DynamicDrawableSpan
Örnek
Şöyle yaparız.
Drawable arrow = ContextCompat.getDrawable(this, R.drawable.ic_arrow);

SpannableString ss = new SpannableString("A*B");
ss.setSpan(new ImageSpan(arrow, DynamicDrawableSpan.ALIGN_BASELINE), 1, 2,
  Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
setSpan metodu - ForegroundColorSpan
Farklı bir renkte metin yazmak için kullanılır. Şöyle yaparız.
ss.setSpan(new ForegroundColorSpan(Color.BLUE), 15, 30, 
                   Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
ss.setSpan(new ForegroundColorSpan(Color.RED), 5, 10, 
                   Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
setSpan metodu - ImageSpan
Örnek
0. karaktere resim yerleştirir. Şöyle yaparız.
ImageSpan imageSpan = ...;
ss.setSpan (imageSpan, 0, 1, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
Örnek
Şöyle yaparız. [0-2] aralığına resim yerleştirir.
ImageSpan span = ...; 
ss.setSpan(span, 0, 3, Spannable.SPAN_INCLUSIVE_EXCLUSIVE); 
setSpan metodu - RelativeSpan
Örnek
Şöyle yaparız.
SpannableString ss = new SpannableString("A" + "\u2192" + "B");
ss.setSpan(new RelativeSizeSpan(2f), 1, 2, 0);
textView.setText(ss);
setSpan metodu - StyleSpan
Şöyle yaparız.
ss.setSpan(new StyleSpan(Typeface.BOLD), 15, 30,
  Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
setSpan metodu - UnderlineSpan
Şöyle yaparız.
ss.setSpan (new UnderlineSpan(), 0, ss.length(), 0);




Drawable Sınıfı

cosntructor
Şöyle yaparız.
Drawable arrow = ContextCompat.getDrawable(this, R.drawable.ic_arrow);
mutate metodu
Şöyle yaparız.
Drawable drawable = ContextCompat.getDrawable(context, resource).mutate();
setColorFilter metodu
Şöyle yaparız.
drawable.setColorFilter(ColorHelper.getPrimaryColor(), PorterDuff.Mode. OVERLAY);

5 Mart 2018 Pazartesi

TelephonyManager Sınıfı

Şu satırı dahil ederiz.
import android.telephony.TelephonyManager;
constructor
Şöyle yaparız.
TelephonyManager tm =(TelephonyManager)
   getSystemService(Context.TELEPHONY_SERVICE);
listen metodu
Şu izin gereklidir.
<intent-filter>
  <action android:name="android.intent.action.PHONE_STATE"/>
</intent-filter>
PhoneStateListener Arayüzü yazısına taşıdım.

getDeviceId metodu
Şöyle yaparız. Döndürülen değer IMEI numarasıdır. Şebeke sağlayıcı IMEI numarasını görebilir
String IMEINumber = tm.getDeviceId();
getLine1Number metodu
Şöyle yaparız.
if (tm.getLine1Number() == null) {
  // No Phone
}
getNetworkType metodu
Örnek ver

getPhoneType metodu
Şöyle yaparız.
if (tm.getPhoneType() == TelephonyManager.PHONE_TYPE_NONE) {
  // No Phone
}
getSimCountryIso metodu
Şöyle yaparız.
String countryID= manager.getSimCountryIso().toUpperCase();
US, IN gibi 2 harfli bir kısaltma döner.

getSimSerial metodu
Şöyle yaparız.
String tmSerial = tm.getSimSerialNumber();