Android cihazınızda debug amaçlı data klasörüne bakmak için DDMS ekranını açtığımızda klasör içeriğini göremeyebilirsiniz.
Bunun sebebi root'lanmamış cihazlarda bu klasöre erişimin sınırlanmış olmasıdır.
Cihazı root'ladıktan sonra içeriği görebilirsiniz.
Root işlemine başlamadan yedek almakta fayda var.
Ben Samsung Kies programı ile yedekleme yapmayı seçtim.
Başka yedekleme programları da mevcut.
Yedekleme bittikten sonra cihazın modeline uygun olan bir root uygulaması bularak çalıştırmak gerekiyor. Her uygulama her cihazı root'layamıyor malesef.
Ben Samsung Galaxy tabletimin model numarasına göre uygun olan bir programı seçtim.
Etiketler
abstraction
Accord Framework
ajax
android
architecture
Array
assets
async task
AsyncTask
authorization
avd
billy joel
button
Classification
collections
component
concurrency
container
data science
database
Decision Tree
Decision Trees
dhcp
distributed
donma
emülatör
encapsulation
exception
express
Feature extraction
Feature Selection
garbage collection
glassfish
google
grafik
güvenlik
hadoop
http
IDE
inheritance
j2ee
jade
java
java.lang
JDBC
jls
JNDI
JSF
jsp
kitap
lib
link
Machine Learning
Marmara Üniversitesi
material design
maven
mongodb
multiple inheritance
nested class
netbeans
network
node.js
NoSQL
oop
Oracle
ORM
pass-by-value
pattern
permission
polymorphism
PrimeFaces
primitive
Project Euler
protocol
R
response
REST
RMI
root
Scala
servlet
Set
sözlük
spring
sqlite
tasarım desenleri
tcp/ip
template
test
thread
tier
toast
tomcat
türk telekom
twitter
UI thread
virtual device
web application
web design
web service
WEKA
wireshark
android etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
android etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
9 Nisan 2015 Perşembe
Android SQLite
android.database.sqlite paketinde bulunuyor.
Yeni veritabanı yaratmak için : OPEN_READWRITE,
Varolan veritabanını okumak için : OPEN_READONLY,
Eğer yoksa yaratıp, sonra okuyup-yazmak için : CREATE_IF_NECESSARY
flagini set edebiliriz.
SQLiteDatabase.openDatabase()
Yeni veritabanı yaratmak için : OPEN_READWRITE,
Varolan veritabanını okumak için : OPEN_READONLY,
Eğer yoksa yaratıp, sonra okuyup-yazmak için : CREATE_IF_NECESSARY
flagini set edebiliriz.
Android Toast
Ekranda kısa süreli bir mesaj gösterir.
Toast.makeText(getApplicationContext(), "", Toast.LENGTH_LONG).show();
Önce Toast.makeText() metodu ile contexti, gösterilecek metni ve süreyi belirtiyoruz.
İkinci parametrede String kullanmak gerekiyor.
Burada int kullandığımızda hata almıyoruz. Uygulama compile ve build ediyor.
Fakat uygulama ayağa kalktığında resource not found gibi muğlak bir hata veriyor.
Buna dikkat etmek lazım.
Süre olarak Toast.LENGTH_SHORT ya da Toast.LENGTH_LONG ile kısa ya da uzun süreli gösterimi seçebiliyoruz.
show() metodu ile de ekranda gösteriyoruz.
Bunu unutunca toast gösterilmiyor; fakat hatalı bir durum olmadığından hata mesajı da almıyoruz.
Bu yüzden show() metodunu unutmamak gerekiyor.
Örnek kullanım
Toast.makeText(getApplicationContext(), "", Toast.LENGTH_LONG).show();
makeText()
Önce Toast.makeText() metodu ile contexti, gösterilecek metni ve süreyi belirtiyoruz.
İkinci parametrede String kullanmak gerekiyor.
Burada int kullandığımızda hata almıyoruz. Uygulama compile ve build ediyor.
Fakat uygulama ayağa kalktığında resource not found gibi muğlak bir hata veriyor.
Buna dikkat etmek lazım.
Süre olarak Toast.LENGTH_SHORT ya da Toast.LENGTH_LONG ile kısa ya da uzun süreli gösterimi seçebiliyoruz.
show()
show() metodu ile de ekranda gösteriyoruz.
Bunu unutunca toast gösterilmiyor; fakat hatalı bir durum olmadığından hata mesajı da almıyoruz.
Bu yüzden show() metodunu unutmamak gerekiyor.
Android AsyncTask
Genel Bilgiler
http://developer.android.com/reference/android/os/AsyncTask.htmlandroid.os paketi içerisinde bulunuyor.
UI threadi meşgul etmemesi açısından uzun zaman alacak işlemlerin kontrolünü AsyncTask sınıfından kalıtımla yarattığımız asenkron sınıflara teslim etmemiz gerekiyor.
Eğer böyle yapılmazsa arayüzün işlem bitene kadar kilitlenmesine/donmasına yol açıyor ki bu kullanıcının tamamen uygulamadan dışlanması demek oluyor.
Zaten bu şekilde yapıldığında Eclipse yada Android Studio hemen hata vererek bizi uyarıyor.
(Java Swing'de de aynı mantıkla hareket ediliyor.
Aksi halde swing formu işlem bitene kadar donup kalır.
Yalnız swing'de bu şekilde bir uyarı almıyoruz.)
Örnek kullanım
private class DownloadFilesTask extends AsyncTask<URL, Integer, Long> { protected Long doInBackground(URL... urls) { int count = urls.length; long totalSize = 0; for (int i = 0; i < count; i++) { totalSize += Downloader.downloadFile(urls[i]); publishProgress((int) ((i / (float) count) * 100)); // Escape early if cancel() is called if (isCancelled()) break; } return totalSize; } protected void onProgressUpdate(Integer... progress) { setProgressPercent(progress[0]); } protected void onPostExecute(Long result) { showDialog("Downloaded " + result + " bytes"); } }
Bu sınıfı kullanmak için de:
new DownloadFilesTask().execute(url1, url2, url3);
Execute metodu
Asenkron sınıftan aldığımız instance'ı çalıştırmak için execute() metodunu çağırıyoruz.
Execute içerisinde bir ya da daha fazla parametre verebiliyoruz.
Yalnız bu parametrelerin tiplerinin aynı olması gerekiyor.
doInBackground() metodu bunların hepsini bir array halinde parametre olarak alabiliyor.
Parametreler
AsyncTask sınıfının parametreleri <Params, Progress, Result> olması içerideki metodların girdi-çıktısının kontrollü ve net bir şekilde belirtilmesini sağlıyor.
Bunları tek tek inceleyelim:
Params : execute metodunda verdiğimiz ve doInBackground() metodunun parametre olarak aldığı değer ya da değerlerin tipi.
Progress : doInBackground() metodunun döndürdüğü ve onProgressUpdate() metodunun parametre olarak aldığı değerin tipi.
Result : onProgressUpdate() metodunun döndürdüğü ve onPostExecute() metodunun parametre olarak aldığı değerin tipi.
Android Button
android.widget paketinde bulunuyor.
http://developer.android.com/reference/android/widget/Button.html
Örnek kullanımı:
...
Önce butonu id'siyle getiriyoruz:
Sonra tıklama eventini dinleyecek bir onClick listener yaratıp butona atıyoruz:
...
Tıklandığı anda buronun onclicklistener metodu onClick içerisindeki işlemleri uygulamaya başlıyor.
Bir diğer yöntem de xml üzerinden yapılabilir.
...
Burada activity'nin selfDestruct adlı metodu çağrılıyor.
Dikkat edilmesi gerek nokta ise, metodun mutlaka public olması ve parametre olarak sadece View alması. Buradaki View parametresi tıklanan butona verilen bir referans oluyor.
Eclipse'te şu hata ile karşılaşılırsa:
Ctrl+Shift+O ile fix imports yaparak View.OnClickListener'ın seçildiğinden emin olmak gerekiyor.
http://developer.android.com/reference/android/widget/Button.html
Örnek kullanımı:
public class MyActivity extends Activity { protected void onCreate(Bundle icicle) { super.onCreate(icicle); setContentView(R.layout.content_layout_id); final Button button = (Button) findViewById(R.id.button_id); button.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { // Perform action on click } }); } }
...
Önce butonu id'siyle getiriyoruz:
final Button button = (Button) findViewById(R.id.button_id);...
Sonra tıklama eventini dinleyecek bir onClick listener yaratıp butona atıyoruz:
button.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { // Perform action on click } });
...
Tıklandığı anda buronun onclicklistener metodu onClick içerisindeki işlemleri uygulamaya başlıyor.
Bir diğer yöntem de xml üzerinden yapılabilir.
<Button android:layout_height="wrap_content" android:layout_width="wrap_content" android:text="@string/self_destruct" android:onClick="selfDestruct" />
...
Burada activity'nin selfDestruct adlı metodu çağrılıyor.
Dikkat edilmesi gerek nokta ise, metodun mutlaka public olması ve parametre olarak sadece View alması. Buradaki View parametresi tıklanan butona verilen bir referans oluyor.
public void selfDestruct(View view) { // Kabloey }...
Eclipse'te şu hata ile karşılaşılırsa:
The method setOnClickListener(View.OnClickListener) in the type View is not applicable for the arguments (new OnClickListener(){})import'larda bir sorun olabilir.
Ctrl+Shift+O ile fix imports yaparak View.OnClickListener'ın seçildiğinden emin olmak gerekiyor.
4 Mart 2015 Çarşamba
Android ve Material Design
http://www.androidgreeve.com/2014/10/how-to-migrate-from-holo-design-to-Material-Design-Android-Lollipop.html
Android faydali lib ler
twitter4j
crawl4j
picasso
volley
okhttp
gson
sqlite-jdbc
crawl4j
picasso
volley
okhttp
gson
sqlite-jdbc
Android de donma sorunu
Uzun süren işlemleri threadsiz yaparsak donma olur. Zaten Android 4den sonra (sanırım) UI thread de asyncTask oluşturmadan uzun sürecek network vb işlemleri yapmaya çalıştığımızda hata veriyor.
async task : kendi threadini yazmak yerine bu taska eleman veririz.
onpreexecyte : oncesi
onpostexecute:sonrası
onprogressupdate: devam ederken aralarda threaedi durdurup işlemini yapar, sonra threadi devam ettirir.
asyncTask ta genericler type istediğinden Void, Integer kullanırız.
async task : kendi threadini yazmak yerine bu taska eleman veririz.
onpreexecyte : oncesi
onpostexecute:sonrası
onprogressupdate: devam ederken aralarda threaedi durdurup işlemini yapar, sonra threadi devam ettirir.
asyncTask ta genericler type istediğinden Void, Integer kullanırız.
Permission lar
Android de izinler thlikeli olabiliyor. Bir uygulamayı yüklemeden önce permissionları iyi okumak gerekli.
Bir uygulama diğerlerini dinleyebiliyor. Kötü niyetli uygulamalar kamerayı, ağ erişimini, lokasyonu kullanarak ekran görüntüsüne kadar alıp bu durumu suistimal edebiliyorlar.
Fraud denen işlemler banka vb kurumsal firmaları zarara uğratabiliyor.
ios'da ise bu tarz sms okuma vs izinler verilmiyor, zaten review da uzunca bir inceleme ve kontrolden geçiyor.
Android de ise herhangi bir uygulama bir iki saat içinde play store da indirmeye hazır olarak yer alıyor.
İzin konusunu gündeme getiren uygulamalar olmuş fakat bu uygulamalar bütün uygulamalara erişim istediğinden aslında daha da büyük risk oluşturuyor! Bu da bir ikilem oluşturuyor..
Bir uygulama diğerlerini dinleyebiliyor. Kötü niyetli uygulamalar kamerayı, ağ erişimini, lokasyonu kullanarak ekran görüntüsüne kadar alıp bu durumu suistimal edebiliyorlar.
Fraud denen işlemler banka vb kurumsal firmaları zarara uğratabiliyor.
ios'da ise bu tarz sms okuma vs izinler verilmiyor, zaten review da uzunca bir inceleme ve kontrolden geçiyor.
Android de ise herhangi bir uygulama bir iki saat içinde play store da indirmeye hazır olarak yer alıyor.
İzin konusunu gündeme getiren uygulamalar olmuş fakat bu uygulamalar bütün uygulamalara erişim istediğinden aslında daha da büyük risk oluşturuyor! Bu da bir ikilem oluşturuyor..
Assets klasörü
assets klasörüne kullanacağımız jar video vb diğer klasörlere konmayan ama lazım olan dosyaları ekleriz.
Örneğin bir jar dosyasını: build path-configure build path add jar (assets-) ve order and export dersek projeyle paketler. Yoksa export ederken projeye dahil etmez.
Örneğin bir jar dosyasını: build path-configure build path add jar (assets-) ve order and export dersek projeyle paketler. Yoksa export ederken projeye dahil etmez.
Toast
tooltip gibi mesaj gösteriyor.
Toast toast = Toast.makeText() diyerek kısa yada uzun süreli bir mesaj yanıp sönüyor.
Toast.length_long : uzun süreli
Toast.length_short : kısa süreli yapmak için.
Toast toast = Toast.makeText() diyerek kısa yada uzun süreli bir mesaj yanıp sönüyor.
Toast.length_long : uzun süreli
Toast.length_short : kısa süreli yapmak için.
R dosyası (R.java)
Generated içindeki R.java dosyası, java dan resource lara erişimi sağlar.
setcontentview icine R.layout.id yi vererek ulaşabiliriz.
Eğer resource larda hata varsa R dosyası oluşmaz - yokolur.
setcontentview icine R.layout.id yi vererek ulaşabiliriz.
Eğer resource larda hata varsa R dosyası oluşmaz - yokolur.
UI tasarımı ve Material Design
Google ın ortaya attığı material design konusu her bir elemanın iki boyutlu kağıt benzeri maddeler şeklinde tasarlanmasını öneriyor.
Gölgeleme ve z-depth ile öne çıkarmak mümkün.
Renkler bir ana renk ve tonları, ona uygun bir accent renk ve bir de arkaplan rengi şeklinde seçiliyor.
Padding ve margin ler belirtilmiş. Resim ve text kenarlarında belirgin şekilde boşluk bırakılıyor.
Gölgeleme ve z-depth ile öne çıkarmak mümkün.
Renkler bir ana renk ve tonları, ona uygun bir accent renk ve bir de arkaplan rengi şeklinde seçiliyor.
Padding ve margin ler belirtilmiş. Resim ve text kenarlarında belirgin şekilde boşluk bırakılıyor.
Android app yazdıktan sonra nasıl test etmeli?
Tek bir AVD de test edip tamamdır demek olmuyor malesef.
En az 3 farklı AVD de ve mümkünse gerçek cihazlarda da test etmek gerek.
Bazen AVD de çalışan bir app aynı sistemin gerçeğinde çalışmayabiliyor.
AVD nin gerçeğe çok yakın olduğunu ama asla gerçek cihazın yerine geçemeyeceğini hatırda tutmakta yarar var.
En az 3 farklı AVD de ve mümkünse gerçek cihazlarda da test etmek gerek.
Bazen AVD de çalışan bir app aynı sistemin gerçeğinde çalışmayabiliyor.
AVD nin gerçeğe çok yakın olduğunu ama asla gerçek cihazın yerine geçemeyeceğini hatırda tutmakta yarar var.
AVD
AVD: Android Virtual Device demektir. Yani Android işletim sistemi kullanan bir sanal cihaz.
Emülatör bu sanal cihazı dilediğimiz gibi test amaçlı kullanabilmemizi sağlıyor.
Eclipse te yukarıda bulunan içinde android ikonu bulunan telefon simgesine tıklayınca AVD manager açılır.
Burada istediğimiz Android versiyonu ve çeşitli sistem özellikleri seçip bir sanak cihaz çalıştırabiliyoruz.
İlk açıldığında uzun süre beklemesi normaldir, panik yapmaya gerek yok.
Açılması uzun sürdüğünden bir kere açtıktan sonra işimiz bitene kadar kapatmamak en iyisi.
Sanal cihazına gerçeğinden hiç farkı yok. Aramam, sms, vb her türlü fonksiyonu simüle edebiliyor.
Emülatör bu sanal cihazı dilediğimiz gibi test amaçlı kullanabilmemizi sağlıyor.
Eclipse te yukarıda bulunan içinde android ikonu bulunan telefon simgesine tıklayınca AVD manager açılır.
Burada istediğimiz Android versiyonu ve çeşitli sistem özellikleri seçip bir sanak cihaz çalıştırabiliyoruz.
İlk açıldığında uzun süre beklemesi normaldir, panik yapmaya gerek yok.
Açılması uzun sürdüğünden bir kere açtıktan sonra işimiz bitene kadar kapatmamak en iyisi.
Sanal cihazına gerçeğinden hiç farkı yok. Aramam, sms, vb her türlü fonksiyonu simüle edebiliyor.
Kaydol:
Kayıtlar (Atom)