Professional Documents
Culture Documents
AndroidStudio PDF
AndroidStudio PDF
mit KSE
Umiitkose.com
Herkese Merhaba, Ben mit Kse. Frat nversitesi
Bilgisayar Mhendislii 4. Snf rencisiyim. 2 sene
boyunca bloumda yer verdiim android derslerini pdf
kitap halinde toplamak istedim. Benimle
umiitkose.com zerinden ya da sosyal alar ile irtibata
geebilirsiniz.
Herkese iyi renmeler, iyi okumalar.
Sosyal Alarm..
indekiler
Android Programlama Giri
1-Android Studio Kurulum
2-Giri ve Emlatrde Hello World Uygulamas
3-Button Tanmlama ve Android Manifest Uygulamas
4-Intent Kavram ve Yeni Ekran oluturma
5-Thread Kavram ve Splash Ekran
6-Uygulamay Tam Ekran Yapma
7-Button Still Tanmlama
8-Layoutlar
9-webView Kullanm ve Uygulamada Web Sayfas Ama
10-Titreim Kullanm (Vibrator)
11-Androidte Yaz Tipi Deitirme
12-Mac Adresi, retici ve Model Bilgileri
13-Option (Men) Oluturma
14-Arama Yapma
15-Bluetooth Kontrol
16-Alert Dialog
17-Progress Dialog
18-Rating Bar
19-CheckBox
20-RadioButton
21-Buttonlar tek bir listener ile kontrol etme
22-Wifi Kullanm
23-Telefon Kameras Kullanm
24-Video ekme, Oynatma
25-ScrollView Kullanm
26-Android Studio Dil Destei
27-MediaPlayer ile Ses Kontrol
28-Payla Butonu
29-PushBots ile Bildirim Gndermek
30-nternet Kontrol
Uygulamalar
1-Hesap Makinesi
2-nternet Taraycs
3-Flash Uygulamas
Android, linux ekirdei zerine ina edilmi bir mobil iletim sistemidir, bu
sistemde ara katman yazlm, ktphaneler ve API C diliyle yazlmtr. Uygulama
yazlmlar ise, Apache harmony zerine kurulu java-uyumlu ktphaneler ihtiva
eden uygulama iskeleti zerinden alr. Android, derlenmi java kodunu altrmak
iin dinamik evirmeli (JIT) Dalvik sanal makinesini kullanr ve cihazlarn
fonksiyonerliini artran uygulamalarn gelitirilmesi iin alan geni bir
programc-gelitirici evresine sahiptir.
Android ile ilgili bilgileri verdikten sonra bir de googlein Temmuz 2005te satn
ald androidte bugne kadar ki gelimelere bakarsak.
Androidin Pazar Pay.
Dnyaca nl aratrma irketi IDC'nin verilerine gre dnya zerindeki akll telefon
sat rakam, 2015'in ilk eyreinde yzde 334,4 milyon adet olarak gerekleti.
Gnmzde bu byk pazarda yaran drt nemli mobil iletim sistemi var:
Android, iOS, Windows Phone ve BlackBerry 10.
Android 1,0: HTC Dreamin iletim sistemi olan bu srm ile android iletim
sistemi adn duyurmaya balad. Bu srm kamera destei, web tarayc, wifi,
Youtube, alarml saat, galeri, bluetooth, sesli arama gibi zellikleri barndrmaktadr.
Android 2,0 ve 2,1: Eclair 29 Ekim 2009da yaynland. HTML5 ve Bluetooth 2.1
destei geldi. Sanal klavye ve yksek ekran znrl ile zelletirilebilen arayz
zellii eklendi. Google maps gelitirildi. Hareketli duvar katlar ve dijital
yaknlatrma zellikleri geldi.
Android 2,2: Froyo Mays 2010da yaynland. 720p ekran znrl destei,
USB, Wifi tarayc zellii ve Flash Player 10.1 destei geldi.
Android 2.3: Gingerbread ubat 2011de yaynland. oklu kamera ve oklu
dokunmatik destei eklendi. Video arama zellii eklendi.
Android 4,1: Jelly Bean Temmuz 2012de kt. Ayn Anda iki uygulama ama
zellii kazandrld. Enerji verimlilii ve taklmadan kayan ekran eklendi.
Android 4.2: Jelly Bean Plus Ekim 2012de yaynland. oklu kullanc, 360
derece panoramik fotoraf kazandrld.
Android 4,2,2: 11 ubat 2013 tarihinde yaynland. Isnma ve donma problemleri
giderildi.
Andorid 4,3: Jelly Bean yaynland. oklu kullanc iin ebevent kontrol, oyunlar
iin 3.0 Open Gl Es destei, Akll bluetooth ve Wifi teknolojisi eklendi. Ayrca
uygulama izinleri bu srmle kontrol edilebilir hale getirildi.
Android 4,4: Kitkat 31 Ekim 2013te yaynland. Grsel arayzde bir ok deiiklik
yapld.
3 Kasm 2014 tarihinde Google Android 5.0 Lollipop srmn kartt. Tm
uygulamalar ve hizmetler Material Design altnda yenilendi.
Error: cannot start Android Studio. No JDK found. Please validate either
ANDROID_STUDIO_JDK, or JDK_HOME or JAVA_HOME points to valid JDK
installation. ECHO is off. Press any key to continue ..
zm :
1-Bilgisayarma sa tklayp zellikleri sein.
2-Gelimi tabna gein.
3-Ortam deikenlerine tklayn.
4-Sistem deikenlerinin altndan yeni deiken yaratn.
5-Adn JAVA_HOME.
6-Deerini C:\Program Files\Java\jdk1.7.0_25 olarak ayarlayn.
7-Sistem deikenlerinden path i bulun ve deerini C:\Program
Files\Java\jdk1.7.0_25\bin olarak deitirin.
Buradaki jdk1.7.0_25 yerine sisteminizdeki jdk versiyonunu yazmanz gerekiyor.
Sonra hatadan kurtulup android studioya balayabilirsiniz.
Resim zerinden anlatrsak;
Android Studio Programlama Blm 2
Giri ve Emlatrde Hello World Uygulamas
File-> New -> New Project ile yeni bir proje oluturuyoruz.
Yeni proje olutura tkladktan sonra karmza Create New Project ksm geliyor..
Daha yakndan incelersek:
Package name: Buras application isminize gre olumaktadr. Sizin yaptnz bir ey
yoktur.
Manifests: Android
programlama iin izin ksm
burasdr. rnein wifi'yi
kullanmak iin telefon'a bunun
iin izin almamz gerektiini
buraya yazcaz.
Gradle Scripts: Gradle, projelerimizi built etmemize yarayan yeni nesil bir sistemdir.
Gradle en gzel zellii test, debug, release esnasnda almanz gereken proje
paketlerini otomatikletirmektedir.
Aada tasarm ksm, Android manifest ve Java ksmnn ilk halleri gsterilmitir.
Hadi Hello World'u emlatr de altralm.
Tasarm ksmnda ise Palette dediim yerden ektiimiz (srkle brak) ile buttonlar,
yazlari, layout ya da etiket gibi bir sr eleman kullanabilirsiniz. Sa alt tarafta
properties ksmnda aldnz elemanlara ait dzenlemeler yapabilirsiniz.(Boyutu,
Rengi gibi)
Elemanlar iinde bulundurduumuz ksm ise activity yani sayfa diyebiliriz. Bir sayfa
stack mant ile alr. En son eklenen sayfa en sttedir.
Geldik java ksmna. onCreate ksm bizim buluntuumuz activityde (tasarm
ekranmz) da ilemleri gerekletirdiimiz ksmdr. onOptionsItemSelected ile
men ayarlamalarn yapabiliyoruz.
Ben android studiodaki projelerimde emlatr olarak genymotion
kullanyorum. Kurulumu iin
Emlatr yaptmz projeleri test etmemiz iin sanal bir android iletim sistemini
barndrdmz programdr. Projemizi burada test edeceiz.
ncelikle 2 tane textView tanmlayp 2 adet edittext'i 1 tane button aktif ederek
gnderceiz. Bu dersten rencekleriniz.
Soldaki paletta kutusu yani tasarm aralarnn bulunduu alandan 2 tane text View 2
tane editText ve 1 tane button alarak ekliyoruz.(Srkle brak ile ekrana srkleyin.)
Basit bir tasarm oluturduk bile.
Android'te kodlarmz java da ki MainActivity snfmza yazyoruz. Orada ncelikle 2
tane editText i tanmlayacaz.
Final deikenini aklarsam ncelikle tanmlanan ilk deiken deeri aldktan sonra
deitirilmemesidir. Telno olarak kalcak. Ayn mesaj da yle. Kullanmasanz da olur.
gonder.setOnClickListener(new view.OnClickListener) {
}}
Ve gerekli olan son bir ey ise en sonda daha yakndan inceliyeceimiz Android
Manifest dosyamz. Android sistemi bir uygulama bileenini balatmadan nce,
uygulamann AndroidManifest.xml dosyasn okuyarak bileenin varln kontrol
etmelidir. Bir uygulamaya ait btn bileenlerin uygulamann ana proje dizininde
olmas gereken bu dosya iinde bildirimi yaplmaldr.
Manifest dosyas uygulamaya ait bileenlerin bildirimine ek olarak
aadaki ilemleri de yapar:
> nternet girii veya kullanc bilgilerinin sadece okunur girii gibi kullanc izinlerini
belirlemek.
Hzl ilemler :
application taglar arasnda biz kendi activitymizi koyuyoruz. zin alrken <uses-
permission android:name="Alncak isim"/> eklinde alyoruz.
activity android:name ve labei kullanarak istersek yeni bir activity iin izin alabiliriz.
Sonraki ksmlarda deinelecektir.
Uygulamay altrdnz da ilem yapmadn grceksiniz.Sebebi ise emlatrn
iinde herhangi bir sms gndercek ilev yapacak birim yok.. Telefondan
denediinizde sonuca ulaacaksnz. Uygulamann emlatrde almas. Telefonda
altrmak iinde apk dosyas yaratmalsnz. Apk dosyas ksm iin tklayn.
Bu dersimizde android ile ilgili bir uygulamann nasl yapldn, srecin nasl iledi,
bir uygulamada izin almaya ilk adm attk ve gzel bir uygulama yaptk. Aadaki
dersleri de inceleyerek daha da ileri seviye uygulama yapacaz. Bu dersi u sebepten
iledim tasarm olsun, kodlama olsun ok kolay olmasada androidi renmek kolay
ve hzldr.
Not:
R.id :bizim hereyi iinde barndran zerinde pek deiiklik yapmadmz gen
classndan geliyor
Android Studio Programlama Blm 4
Intent Kavram ve Yeni Ekran Oluturma
Intentler ikiye ayrlr, dolayl intentler ve dorudan intentler. Dolayl intentlere rnek
olarak web tarayc rneini verebiliriz. Dorudan intentler ise dorudan isim vererek
(kendimizin kontrol edebildii )uygulamalardr. imdi dorudan intent rnei ile
ekran geilerimizi nasl yaptmz greceiz.
Her zamanki gibi yeni projemizi atk. Sonrasnda yeni bir activity ve java dosyamz
oluturacaz.
ncelikle yeni bir activity oluturucaz. (layout -> Sa tk -> new -> Layout
Resource file)
ncelikle ilk activitye bir tane buton atn. 2. Yeni oluturulan activitye ise Android
uygulamasna Hogeldiniz balkl bir tane text atn.
1. Java dosyamzda ise setContentView altna
yaptrn. Burada ncelikle bir butonu aktik ettik. Yani bir dinleme verdik. Buttona
bir ey olunca olay olunca onun iindeki ilemi gerekletir diye dnebilirsiniz.
Intent intent=new Intent(Butonun bulunduu ksm, butonun gidecei class) ksm
hep bu ekil olur.Resmi ;
package com.example.myapplication;
import android.app.Activity;
import android.os.Bundle;
import android.widget.Toast;
/**
* Created by um on 20.7.2015.
*/
public class startingPage extends Activity {
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
}
<activity
Android:name=.classsmin
></activity>
ncelikle 1 tane layout dosyas oluturcaz. (layout -> Sa tk -> new -> Layout
Resource file) ve 1 tane da java dosyas oluturcaz. (Java -> sa tk -> New ->
Java class)
Oluturduktan sonra android manifest'te yeni bir tane java dosyas olutuunu haber
vericez. Oluturduumuz java dosyasnn ismini name=Java dosyanz ve etiketinizi
burada oluturuyorsunuz.
Java dosyamza bir thread aktif edelim. setContentView altna u kodlar atcaksnz.
Kolaylk olsun diye kodlar..
Ve altrdktan 5 sn sonra
yeni bo activity gelicek.
Yaknda ilerini de
dolduracaz.
Andoid Studio Programlama Blm 6
Uygulamay tam ekran yapma
Android studio'da uygulamasn tam ekran yapmak isteyenler olucaktr. Bildirim
ubuu ksmndan kurtulmak iin izlenecek yollar.
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
Resimler :
Android Studio Programlama Blm 7
Button Stilli Tanmlama
Androidte button stilli dediimiz olay bir buttona tklaynca eklinin deimesidir.
Resim :
Kodlar:
Resim :
Kodlar :
<style name="gonder" parent="@android:style/Widget.Button">
<item name="android:background">@drawable/gonder</item>
</style>
Bir sonra ki adm ise activity_main.xml'de bir button nesnesi atamak ve iini bo
brakmak. F2 tuu ile d ve nesnenin iini ayarlayabilirsiniz. Sonra ise sa altta ki
properties'ta style ksmnda gonder'i semek ve resim olarak 1 resim gelicek.
Android dersi iin programlama kadar nemli bir konu varsa oda tasarm'dr.
Tasarm'da bugn Layout yani nesnelerimizi, itemlerimizi doru ve gzel bir ekilde
kullanclarmza sunduumuz yeri grceiz.
1-)LinearLayout'lar:
Peki horizontal ile vertical arasndaki fark ne ? Biri yan yana dizerken dieri vertical
yani alt alta nesneleri yerletirir. Eer bir layout atp tm ekran kapattndan
ikayetciyseniz layout'un boyutunu matct_parent deilde wrap yapmay deneyin.
2-)Relative Layout:
Bu ders'te web sayfalar ile etkileimi grceiz. webView iinde bir web sayfas
amay grcez. Webview, hem uzak sunuculardaki web sayfalarn hem
de uygulamanz ierisine koyduunuz html sayfalarn grntleyebileceiniz bir
bileendir. Bu bileeni kullanarak uygulamanzdan kmadan web sayfalarn
grntleyebilirsiniz.
Bir sonraki adm'da ise kod ksmmz var. ncelikle webView'i tanmlyoruz.
setJavaScricptEnabled ile java scriptleri altryoruz. setWebViewClient ile
kendimiz taraycda amamasn salyoruz. load.URL ile de yklenmesini salyoruz.
Projenin son adm ise her zamanki gibi izinler.
Daha gelimi bir uygulama olan Uygulama 2 internet taraycs yapma Yazsn
incelemenizi neririm.
Android Studio Programlama Blm 10
Androidte Titreim Kullanm
Kod olarak
Vibrator degisken=(Vibrator).getSystemService(Context.VIBROTOR_SERVCE);
komutunu ekleyip
degisken.vibrate(200); diyerek titreimi onaylatyoruz.
Burada 200 ms olarak alnr ona gre hesaplama yapnz.
Eer telefon ses modu komutlarn kontrol edicekseniz yararl olacak komutlar:
AudioManager sesKontrol = (AudioManager)getSystemService(Context.AUDIO_SERVICE);
switch (sesKontrol.getRingerMode()) {
case AudioManager.RINGER_MODE_SILENT:
break;
case AudioManager.RINGER_MODE_VIBRATE:
break;
case AudioManager.RINGER_MODE_NORMAL:
break;
ncelikle yaz tipi deitirmez iin bizim fonts'lara ihtiyacmz var. Fontslar ierisinde
karakterleri barndran yaz dizisidir. tff uzantldr. Bir ka tane gzel fonts olan
siteler aadadr.
http://www.fonttr.com/trliste.aspx?sayfaNo=13&grup=eitli&sys=1
ncelikle indirdiimiz ttf uzantl yaz fontlarmz assets klasr altnda fonts
klasrnn iine atyoruz. Yoksa sa tk new folder demeniz yeterli olucaktr.
Xml Kodumuz:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity" >
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:layout_marginLeft="36dp"
android:layout_marginTop="136dp"
android:text="Button" />
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/button1"
android:layout_alignParentTop="true"
android:layout_marginTop="79dp"
android:text="TextView" />
<EditText
android:id="@+id/editText1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/textView1"
android:layout_alignParentTop="true"
android:layout_marginTop="33dp"
android:ems="10" >
<requestFocus />
</EditText>
</RelativeLayout>
Java Kodumuz:
package com.example.yazitipi;
import android.app.Activity;
import android.graphics.Typeface;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
@Override
public void onClick(View v) {
t1.setText(e1.getText().toString());
t1.setTypeface(tf1);
}
});
}
}
Uygulamamzn Resimli hali: stteki editText'teki yaz ile altnda ki textView'deki
yaz farkl
Android Studio Programlama Blm 12
Android Studio Mac Adresi, retici ve Model Bilgileri
Android programlama yazarken bazen Mac Adresi, Model ya da retici bilgileri gibi
baz bilgilere ihtiyacmz olabilir. imdi onlarla ilgili rnek yapacaz.
<TextView
android:id="@+id/textView2_mac"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceLarge" >
</TextView>
<TextView
android:textAppearance="?android:attr/textAppearanceLarge"
android:layout_height="wrap_content" android:text=""
android:layout_width="wrap_content"
android:id="@+id/textView3_manufacture">
</TextView>
</LinearLayout>
Java Kodumuz :
package com.example.myapplication;
import android.app.Activity;
import android.content.Context;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.net.wifi.WifiInfo;
import android.net.wifi.WifiManager;
import android.os.Build;
import android.os.Bundle;
import android.widget.TextView;
String mac_adresi=get_mac_address();
mac.setText("Mac => "+mac_adresi);
manufacturer.setText("Manufacturer => "+Build.MANUFACTURER);
try{
WifiManager wifiMan = (WifiManager) this.getSystemService(Context.WIFI_SERVICE);
WifiInfo wifiInf = wifiMan.getConnectionInfo();
return wifiInf.getMacAddress();
}
catch (Exception e) {
return "00:00:00";
}
}
}
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"></uses-permission>
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name=".MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name=".startingPage"
android:label="@string/app_name" >
</activity>
</application>
</manifest>
Uygulamann almas :
Android Studio Programlama Blm 13
Android Studio Option Men oluturma
ncelikle yeni bir android Sayfas oluturcaz ve menye basp 2. sayfa mesela bu
hakkmda sayfas olsun.Sayfaya tkladmda 2. activity'e gei yapsn. k tuuna
basnca da ksn.. Yeni sayfa oluturma vs. tekrar renmek istenlere..
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
switch (id){
case R.id.item1: System.exit(0);
return true;
case R.id.newpage:
Intent a=new Intent(MainActivity.this,startingPage.class);
startActivity(a);
return true;
}
return false;
}
Resim :
Menu.xml'de men klasr iinde ise 2 tane yeni item ekleyeceiz. Bunlardan 1 tane
vardr ve ad da byk ihtimal settings'tir. Ayarlayarak halledebilirsiniz.
Bu blmde Arama yapcaz. Bildiiniz numara arycaz. Bir buton olcak bu butona
basinca direk arama yapcaz. Hadi 155 i arayalm tabi iletmeyelim..
imdi ise Bir button'u layoutumuzun iine atn. Ve sa tk Edit Style ile button
grnmn deitiriyoruz..
imdi ise aramamz iin gerekli java kodumuz.ntent ile Bir numaray aradk.. ve en
son activitymizi altrdk..
Biz bunlar yaptkta zin aldk m? Tabiki de hayr. Android manifestte izin iin
Permissions ve Add Sonra name de CALL PHONE seelim..
Bir cep telefonu ile bir tableti, laptop bilgisayar ya da PDA'y Bluetooth aracl ile
birbirine balayp internete girmeniz mmkn olabilir.
imdi sizinle bir android cihazda bluetooth ama, kapama ve grnr yapma
ilemlerini yapcaz.
activity_main kodlarmz :
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity" >
<LinearLayout
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true">
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Ac"
android:id="@+id/ac"
android:layout_gravity="center_horizontal" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Kapat"
android:id="@+id/kapat"
android:layout_gravity="center_horizontal" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Gorunur Yap"
android:id="@+id/gyap"
android:layout_gravity="center_horizontal" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="New Text"
android:id="@+id/textView"
android:layout_gravity="center_horizontal" />
</LinearLayout>
</RelativeLayout>
Sonraki ilem ise java kodlarn kullanmak olucak. 3 buttonu tanmladk. Burada
BluetootAdapter snfn kullancaz. Bluetooth'un durumunu alaraktan button'a
ilevlerini vericez.
JAVA KODLARIMIZ :
package com.umiitkose.myapplication;
import android.bluetooth.BluetoothAdapter;
import android.content.Intent;
import android.os.Bundle;
import android.app.Activity;
import android.view.View;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.Toast;
Button ac;
Button kapat;
Button gorunurYap;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ac=(Button)findViewById(R.id.ac);
gorunurYap =(Button)findViewById(R.id.gyap);
kapat=(Button)findViewById(R.id.kapat);
final BluetoothAdapter adaptor = BluetoothAdapter.getDefaultAdapter();
ac.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
if(adaptor == null )
{
Toast.makeText(MainActivity.this, "Blueetoth Aygt Bulunamad",
Toast.LENGTH_SHORT).show();
}
else
{
if(!adaptor.isEnabled())
{
Intent bluetoothBaslat = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
startActivityForResult(bluetoothBaslat,1);
Toast.makeText(MainActivity.this, "Bluetooth Aygt Ak", Toast.LENGTH_SHORT).show();
}
else {adaptor.disable();}
}
}
});
gorunurYap.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
if(!adaptor.isEnabled())
{}else{
adaptor.disable();
Toast.makeText(MainActivity.this, "Kapatld", Toast.LENGTH_SHORT).show();
}
}
});
}
}
<uses-permission android:name="android.permission.BLUETOOTH"></uses-permission>
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN"></uses-permission>
zinlerimizi ekleriz.
Uygulamann grnts :
Android Studio Programlama Blm 16
Android Studio Alert Dialog
Android studio'da Alert Dialog konusuna geldik. Alert Dialog bizim ufak bir pencere
ile ynlendirmeler yapmamza yarayan bir uygulama kullanc diyalog penceresi
diyebiliriz. nk ufak bir pencere alr ve ne yapmak istersiniz diye sorar. rnein
Aadaki resimde ki gibi..
Alert Dialog kullanarak bir mesaj kullancya sunabiliriz. Mesela geri tuuna basnca
uygulamadan kmak m istiyorsunuz ya da bir butona basnca bir uyar penceresi
karabiliriz. Birazdan onun rneini grceiz.
ncelikle Kodlara Geelim.. Layout ksmnda bir ilem yapmamza gerek yok. Sadece
bir button atn ve Android Manifest'te de bir ileme gerek yok. Hepsi sadece java
kodu ile hallediceiz. ncelikle geri buttonuna basnca gitmesi ksm..
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
Toast.makeText(MainActivity.this, "Alyor.", Toast.LENGTH_LONG).show();
}
});
builder.setNegativeButton("Hayr", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
Toast.makeText(MainActivity.this, "Pekala.", Toast.LENGTH_LONG).show();
}
});
Geri kalan ilemler de evet ve hayr adnda iki ksm oluturup yaplan cevaba gre
toast mesaj gstermek ya da geri butonunda ki gibi uygulamay kapatmak.
Kodlar :
package com.umiitkose.egitim2;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) {
//Eer geri butonuna baslrsa
try{
AlertDialog.Builder alertDialogBuilder=new AlertDialog.Builder(this); //Mesaj Penceresini
Yaratalm
alertDialogBuilder.setTitle("Programdan klsn
M?").setCancelable(false).setPositiveButton("Evet", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int id) { //Eer evet butonuna baslrsa
dialog.dismiss();
android.os.Process.killProcess(android.os.Process.myPid());
//Uygulamamz sonlandryoruz.
}
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(getApplicationContext(), "Programdan kmaktan vazgetiniz.",
Toast.LENGTH_SHORT).show();
}
});
alertDialogBuilder.create().show();
//son olarak alertDialogBuilder' oluturup ekranda grntletiyoruz.
return super.onKeyDown(keyCode, event);
}
catch(IllegalStateException e){ //yapmz try-catch blogu ierisine aldk
//hata ihtimaline kar.
e.printStackTrace();
}
return true;
}
return super.onKeyDown(keyCode, event);
}
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
Toast.makeText(MainActivity.this, "Alyor.", Toast.LENGTH_LONG).show();
}
});
builder.setNegativeButton("Hayr", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
Toast.makeText(MainActivity.this, "Pekala.", Toast.LENGTH_LONG).show();
}
});
});
}}
Android Studio Programlama Blm 17
Android Studio Progress Dialog
Android studio 'da progress dialog'u grceiz. ncelikle nedir bu progres Dialog?
Progress Dialog belirli bir ilem yaparken ilemin uzun srmesine karlk
kullanclara sunduumuz uyar penceresidir. Mesela Dosya indirirken ki 100'e kadar
dolma ilemi. Hadi bunu biz bir progress rneinde yapalm
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity" >
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Progress Dialog Tkla"
android:layout_centerVertical="true"
android:layout_centerHorizontal="true" />
</RelativeLayout>
Java Kodlarmz :
package com.umiitkose.egitim2;
import android.app.Activity;
import android.app.ProgressDialog;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
/**
* Android ProgressDialog example
* @author Prabu Dhanapal
* @version 1.0
* @since SEP 01 2013
*
*/
public class MainActivity extends Activity {
Button button;
ProgressDialog progressDoalog;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
button = (Button) findViewById(R.id.button1);
button.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
progressDoalog = new ProgressDialog(MainActivity.this);
progressDoalog.setMax(100);
progressDoalog.setMessage("Ykleniyor...");
progressDoalog.setTitle("Progres Dialog rnei");
progressDoalog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
progressDoalog.show();
new Thread(new Runnable() {
@Override
public void run() {
try {
while (progressDoalog.getProgress() <= progressDoalog
.getMax()) {
Thread.sleep(200);
handle.sendMessage(handle.obtainMessage());
if (progressDoalog.getProgress() == progressDoalog
.getMax()) {
progressDoalog.dismiss();
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
}).start();
}
Uygulamamzn almas :
Android Studio Programlama Blm 18
Android Studio Rating Bar
Android studio'da rating Bar kullanmna geldik. Rating bar mesela bir ilem
yapacaksnz puanlama oylama sistemi. Anket sistemi gibi dnn. Onun iin bir
puan sistemi oluturdunuz. te burada Rating bar kullancaksnz.
Layout'umuza ncelikle 1 tane rating bar, 1 tane button ve sonuc adl text View
oluturduk.
Activity_main Kodlar :
<TextView
android:id="@+id/oylaTV"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Oyla"
/>
<RatingBar
android:id="@+id/ratingBar"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:numStars="5"
android:stepSize="1.0" />
<Button
android:id="@+id/gonderButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Gnder" />
<LinearLayout
android:id="@+id/linearLayout1"
android:layout_width="match_parent"
android:layout_height="wrap_content" >
<TextView
android:id="@+id/sonucTV"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Sonu : "
/>
<TextView
android:id="@+id/sonucCiktiTV"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text=""
/>
</LinearLayout>
</LinearLayout>
package com.umiitkose.egitim2;
import android.os.Bundle;
import android.app.Activity;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.RatingBar;
import android.widget.Toast;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.RatingBar;
import android.widget.RatingBar.OnRatingBarChangeListener;
import android.widget.TextView;
import android.widget.Toast;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
addListenerOnRatingBar();
addListenerOnButton();
ratingDegeri.setText(String.valueOf(rating));
}
});
}
gonderButton.setOnClickListener(new OnClickListener() {
}
});
}
}
Uygulamay altrdmz da :
Android Studio Programlama Blm 19
Android Studio checkBox Kullanm
activity_main Kodu :
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_margin="10dp"
android:orientation="vertical" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hangi Takimi Tutuyorsunuz ?"
android:textSize="16sp"
android:textStyle="bold"
/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal" >
<LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:orientation="vertical" >
<CheckBox
android:id="@+id/checkBox1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Beikta"
android:checked="false" />
<CheckBox
android:id="@+id/checkBox2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Galatasaray"
android:checked="false" />
<CheckBox
android:id="@+id/checkBox3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Bursaspor"
android:checked="false" />
</LinearLayout>
<LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:orientation="vertical" >
<CheckBox
android:id="@+id/checkBox4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Fenerbahe"
android:checked="false" />
<CheckBox
android:id="@+id/checkBox5"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Trabzonspor"
android:checked="false" />
<CheckBox
android:id="@+id/checkBox6"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Dier"
android:checked="false" />
</LinearLayout>
</LinearLayout>
<Button
android:id="@+id/gonder"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Gnder"
android:layout_marginTop="10dp"
android:layout_gravity="center_horizontal" />
</LinearLayout>
Java Kodu :
cb1.setOnCheckedChangeListener(new OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if(cb1.isChecked())
Toast.makeText(getApplicationContext(), buttonView.getText(),
Toast.LENGTH_SHORT).show();
}
});
Kodu ile cb1 seili ise bir Toast mesaj gsterdik. Tkladmz kutucuk yaz olarak
nmze kcak. takim isimli String deikenimizde her checkbox iin ischecked()
metodu ile seili olup olmadn seili ise de button'a tklaynca Toast eklinde
gstermesini istedik.
Genel hali ile Checkbox Kullanm MainActivity kodlar..
package com.umiitkose.egitim2;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.CompoundButton.OnCheckedChangeListener;
import android.widget.Toast;
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Android Studio'da sra Radio Button kullanmnda. Radio button web sayfalarndaki
oka kullandmz checkbox gibi bir iaret kutucuu diyebiliriz. CheckBox'tan fark
ise checkbox'ta birden fazla iaretiyi seebilirken, Radio Button'da tek bir iaretiyi
sememiz gerekmektedir. Kodlamaya Balarsak
ncelikle activity_main :
<RadioGroup
android:id="@+id/radioSex"
android:layout_width="wrap_content"
android:layout_height="wrap_content" >
<RadioButton
android:id="@+id/radioMale"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Erkek"
android:checked="true" />
<RadioButton
android:id="@+id/radioFemale"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Bayan" />
</RadioGroup>
<Button
android:id="@+id/btnDisplay"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Gonder" />
</LinearLayout>
MainActivity kodlarmz:
Bir buton'da iaretli olan radio button'u aldk. Button'a tklandn'da radio
Group'taki seili d'yi aldk ve button'da bir Toast Mesaj ile gsterdik.
package com.umiitkose.egitim2;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.Toast;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
rG= (RadioGroup) findViewById(R.id.rG);
gonder= (Button) findViewById(R.id.gonder);
gonder.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
int selectedId = rG.getCheckedRadioButtonId();
rB= (RadioButton) findViewById(selectedId);
Toast.makeText(MainActivity.this, rB.getText(), Toast.LENGTH_SHORT).show();
} });
}
}
Uygulamann almas :
Android Studio Programlama Blm 21
Android Studio Buttonlarn tek bir listenir ile kontrol
Bu seferki dersimizin amac switch case yaps kullanarak birden fazla butonu tek bir
listener ile kontrol edicez. Yani biz her button iin tek tek tklama olay tanmlamtk
imdi ise tek bir tklamada hepsini kontrol ediceiz. Mesela 1 button 2 sayy toplasn.
1 butonumuz text View'e Ali yazdrsn. 1 Buton'da Toast Mesaj gstererk Button1 'e
tkladnz desin.
Tasarm Ksm:
Tasarmn Kodlar :
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity">
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="New Button"
android:id="@+id/button"
android:layout_below="@+id/button2"
android:layout_centerHorizontal="true" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="New Button"
android:id="@+id/button2"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:layout_marginTop="101dp" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="New Button"
android:id="@+id/button3"
android:layout_below="@+id/button"
android:layout_centerHorizontal="true" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceLarge"
android:text="Large Text"
android:id="@+id/textView"
android:layout_below="@+id/button3"
android:layout_centerHorizontal="true"
android:layout_marginTop="84dp" />
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/editText"
android:layout_alignParentTop="true"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true" />
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/editText2"
android:layout_below="@+id/editText"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true" />
</RelativeLayout>
package com.umiitkose.myapplication;
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
//noinspection SimplifiableIfStatement
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
@Override
public void onClick(View view) {
switch (view.getId()){
case R.id.button:
Toast.makeText(getApplicationContext(), "Buton 1'e tkland.", Toast.LENGTH_SHORT).show();
break;
case R.id.button2:
tv.setText("Ali");
break;
case R.id.button3:
float sayi1float=Float.parseFloat(a1.getText().toString());
float sayi2float=Float.parseFloat(a2.getText().toString());
tv.setText(String.valueOf(sayi1float+sayi2float));
break;
}
}
}
Uygulamann almas.
Activity_main:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity" >
<ToggleButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/a"
android:id="@+id/toggleButton"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true" />
</RelativeLayout>
package com.umiitkose.myapplication;
import android.bluetooth.BluetoothAdapter;
import android.content.Context;
import android.content.Intent;
import android.graphics.Bitmap;
import android.media.MediaRecorder;
import android.net.Uri;
import android.net.wifi.WifiManager;
import android.os.Bundle;
import android.app.Activity;
import android.provider.MediaStore;
import android.view.View;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.Toast;
import android.widget.ToggleButton;
WifiManager modem=null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
/*ToggleButtonu bulup aktif ediyoruz. Eer on ksmndaysa seiliyse wifiAc metoduna geicek ve wifi
Accak. Off ksmnda ise wifi kapat metodunu arp kapatcak.
*/
final ToggleButton btn=(ToggleButton)findViewById(R.id.toggleButton);
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if(btn.isChecked()){
wifiAc();
}
else
wifiKapat();
}
});
} //Modemin wifi durumu kapalysa wifiyi ayor. Aksa zaten ak diyor.
private void wifiAc(){
modem=(WifiManager)getSystemService(Context.WIFI_SERVICE);
if(modem.getWifiState()== WifiManager.WIFI_STATE_DISABLED){
modem.setWifiEnabled(true);
}else if(modem.getWifiState()==WifiManager.WIFI_STATE_ENABLING){
Toast.makeText(MainActivity.this, "Ak", Toast.LENGTH_SHORT).show();
}
}
//Eer wifi ak ise kapatyor.
private void wifiKapat(){
modem=(WifiManager)getSystemService(Context.WIFI_SERVICE);
if(modem.getWifiState()== WifiManager.WIFI_STATE_ENABLED){
modem.setWifiEnabled(false);
}else if(modem.getWifiState()==WifiManager.WIFI_STATE_DISABLING){
Toast.makeText(MainActivity.this, "Zaten Kapal", Toast.LENGTH_SHORT).show();
}
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity" >
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="New Button"
android:id="@+id/button"
android:layout_alignParentBottom="true"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true" />
<ImageView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/imageView"
android:layout_above="@+id/button"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_marginBottom="108dp" />
</RelativeLayout>
Java Dosyamz :
Java dosyasnda ncelikle resim ekme ilemini aktif ediyoruz. d ile isteimizi
onaylayp imageview'e atarak gsterimini salyoruz.
package com.umiitkose.myapplication;
import android.bluetooth.BluetoothAdapter;
import android.content.Context;
import android.content.Intent;
import android.graphics.Bitmap;
import android.media.MediaRecorder;
import android.net.Uri;
import android.net.wifi.WifiManager;
import android.os.Bundle;
import android.app.Activity;
import android.provider.MediaStore;
import android.view.View;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.Toast;
import android.widget.ImageView;
Button btn;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btn=(Button)findViewById(R.id.button);
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent kamera=new Intent(MediaStore.ACTION_IMAGE_CAPTURE); // Resim ekme istei ve
activity balatlp id'si tanmland
startActivityForResult(kamera,33);
}
});
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if(requestCode==33){
Bitmap image=(Bitmap)data.getExtras().get("data");//ekilen resim id olarak bitmap eklinde alnd
ve imageview'e atand
ImageView resim= (ImageView)findViewById(R.id.imageView);
resim.setImageBitmap(image);
<uses-permission android:name="android.permission.CAMERA"></uses-permission>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-
permission>
<uses-feature android:name="android.hardware.Camera"></uses-feature>
activity_main kodlar:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity" >
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="New Button"
android:id="@+id/button"
android:layout_alignParentBottom="true"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true" />
<VideoView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/videoView"
android:layout_above="@+id/button"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_marginBottom="180dp" />
</RelativeLayout>
1 tane button'a Video kaydetme ilemini verdik. ve bir id atadk. 33 ile kamera
grntleme idsi oldu. Bu istek ile verimizi aldk ve video view'e ektiimiz
veri araclyla aktardk. Aktarmak iinde dikkat ettiyseniz 33 idsini kullandk.
package com.umiitkose.myapplication;
import android.bluetooth.BluetoothAdapter;
import android.content.Context;
import android.content.Intent;
import android.media.MediaRecorder;
import android.net.Uri;
import android.net.wifi.WifiManager;
import android.os.Bundle;
import android.app.Activity;
import android.provider.MediaStore;
import android.view.View;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.Toast;
import android.widget.VideoView;
Button btn;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btn=(Button)findViewById(R.id.button);
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent kamera=new Intent(MediaStore.ACTION_VIDEO_CAPTURE);
startActivityForResult(kamera,33);
}
});
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
VideoView video=(VideoView)findViewById(R.id.videoView);
if(requestCode==33){
Toast.makeText(MainActivity.this, "Kamera Butonu Kullanld.", Toast.LENGTH_SHORT).show();
Uri abc=data.getData();
video.setVideoPath(String.valueOf(abc));
video.start();
}
<uses-permission android:name="android.permission.CAMERA"></uses-permission>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-
permission>
<uses-feature android:name="android.hardware.Camera"></uses-feature>
Emlatrde ltfen denemeyiniz almamaktadr. Android Studio'da apk dosyas
oluturmak iin tklayn.
Uygulamann almas :
Android Studio Programlama Blm 25
Android Studio ScrollView Kullanm
<ScrollView
android:layout_width="match_parent"
android:layout_height="match_parent"
xmlns:android="http://schemas.android.com/apk/res/android">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:weightSum="1">
<TextView
android:id="@+id/tv_long"
android:layout_width="403dp"
android:layout_height="match_parent"
android:text="@string/yazi">
</TextView>
</LinearLayout>
</ScrollView>
Android Studio Programlama Blm 26
Android Studio Dil Destei
Basit bir uygulama gelitirelim. Hello world'u Trke dil destei ile Merhaba
Dnya'ya dntrelim
Mediaplayer snfna ihtiyacmz var bunun iin. ve bir tane de ses dosyasna. Ses
dosyasn res klasrnde raw klasr ap iine atnz. sim olarak ksa bireyler
koyunuz. Baz karakterleri kabul etmiyor. Trke karakter vs.
Activity_main kodlarmz :
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity">
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Oynat"
android:id="@+id/button"
android:layout_marginTop="151dp"
android:layout_marginLeft="38dp"
android:layout_marginStart="38dp"
android:layout_alignParentTop="true"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Durdur"
android:id="@+id/button2"
android:layout_alignTop="@+id/button3"
android:layout_toRightOf="@+id/button3"
android:layout_toEndOf="@+id/button3" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Beklet"
android:id="@+id/button3"
android:layout_alignTop="@+id/button"
android:layout_centerHorizontal="true" />
</RelativeLayout>
package com.umiitkose.myapplication;
import android.media.MediaPlayer;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
if(ses.isPlaying()){
ses.pause();
}
else{
ses.start();
}}
Android Studio Programlama Blm 28
Android Studio Payla Butonu
Androidte yaptmz uygulamay belirli yerlerde paylamak isteriz. Bunun iin hazr
payla butonu ksm var. Bu dersimizde onunla ilgili rnek vericeim.
Activity_main.xml kodlar :
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity" >
<Button
android:id="@+id/btnShare"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/lblContent"
android:layout_marginTop="50dp"
android:text="Payla" />
<EditText
android:id="@+id/txtContent"
android:layout_width="100dp"
android:layout_height="wrap_content"
android:layout_marginLeft="50dp"
android:layout_toRightOf="@+id/lblContent"
android:ems="10" >
<requestFocus />
</EditText>
<TextView
android:id="@+id/lblContent"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Paylalacak yaz" />
</RelativeLayout>
Basit bir editText ile tanmlanm yazda textView iine girilen veri alnarak bir buton yardmyla
paylaabiliyoruz.
MainActivity.java dosyasnn kodlar
package googleyardim.example.info.paylas;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
shareMyMessage(message);
}
});
}
Telefonda herhangi bir olayda bildirim gelebiliyor. rnein facebookta yeni yorum
gibi. Bizde dardan kendi uygulamamz ile ilgili bilgiler vericek bir bildirim rnei
vericeiz. ncelikle bunu bir web sitesi ile yapcaz. Tabi Google developerstanda api
key almamz gerekmektedir.
Aps & auth'tan credentials'tan Create new Key'e tklayarak server key - Create
ilemini gerektetiriyoruz.
Bize verdii AP key'i not alyoruz.
imdi elimizde ap key ve stte kaydettiimiz project Number'mz var.
compile 'com.pushbots:pushbots-lib:2.0.13@aar'
Add the following permessions and change com.example.sampleapp with your app
identifier. project isimlerini com.example.sampleapp'y kendi proje isminizle
deitirin.
The following intent-filter in your main activity: activity main ksmnda intent filter
ekleyin
<intent-filter>
<action android:name="com.example.sampleapp.MESSAGE" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
Add the following activity, reciever and service before the end of your application tag,
and in all of the above code change com.example.sampleapp with your app identifier.
(Application taglarndan sonunda reciever ve servise'leri ekliyeceksiniz. Ve kendi
project name'i com.example.sampleapp'yi deitirmeyi unutmayn)
<receiver
android:name="com.pushbots.google.gcm.GCMBroadcastReceiver"
android:permission="com.google.android.c2dm.permission.SEND" >
<intent-filter>
<!-- Receives the actual messages. -->
<action android:name="com.google.android.c2dm.intent.RECEIVE" />
<!-- Receives the registration id. -->
<action android:name="com.google.android.c2dm.intent.REGISTRATION" />
<category android:name="com.example.sampleapp" />
</intent-filter>
</receiver>
<receiver android:name="com.pushbots.push.DefaultPushHandler" />
<service android:name="com.pushbots.push.GCMIntentService" />
Res Values'te yeni bir xml oluturun. Pushbots.xml'de Kodlarmz. Burada
pb_senderid : Proje Number pb_appid ise pushbots'a kaydedicez imdi uygulamay
oradaki ID.
Uygulamay telefonunuz ykleyip Send a push'ta yeni bir mesaj yolladktan sonraki
hali..
Detayl Bilgi in Tklayn..
Android Studio Programlama Blm 30
Android Studio nternet Varl
// Balant var
}else{
//Balant yok
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
Android Studio Uygulamalar 1 Hesap Makinesi
Hesap Makinesi
ncelikle basit bir tasarm yapyoruz. Ben stne dmeden aadaki ekil
yaptm.
Hesap'la da ise Eer toplama ilemine bastysam toplama ilemini yapcak. Yani
yukardan aldm ilk deer ile imdi ki deeri toplayacak. Dier ilemlerde ayn
mantkta.
Projenin kod hali isteyenler iin HesapMakinesi
Android Studio Uygulama 2
Android Studio nternet Taraycs
Activity_main Kodlar:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#E0E0D1" >
<LinearLayout
android:id="@+id/iki"
android:layout_width="match_parent"
android:layout_height="wrap_content" >
<TextView
android:id="@+id/textViewURL"
android:layout_width="50dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:paddingLeft="13dp"
android:textColor="#000"
android:text="URL" />
<EditText
android:id="@+id/URL"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:ems="10" >
</EditText>
<Button
android:id="@+id/Git"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="Git" />
</LinearLayout>
<WebView
android:id="@+id/webV"
android:layout_width="fill_parent"
android:layout_height="850dp"
android:layout_below="@id/iki" />
<LinearLayout
android:id="@+id/bir"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:weightSum="3"
android:layout_below="@+id/webV"
>
<Button
android:id="@+id/Geri"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="Geri" />
<Button
android:id="@+id/Anasayfa"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="Anasayfa" />
<Button
android:id="@+id/Ileri"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="Ileri"
/>
</LinearLayout>
</RelativeLayout>
import android.app.AlertDialog;
import android.content.Context;
import android.content.Intent;
import android.net.ConnectivityManager;
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.webkit.WebChromeClient;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
webV = (WebView) findViewById(R.id.webV);
webV.getSettings().setJavaScriptEnabled(true);
webV.setWebViewClient(new MyWebViewClient());
webV.loadUrl("http://www.google.com.tr");
URL = (EditText) findViewById(R.id.URL);
Git.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
if (URL.getText().toString().length() > 10) {
Toast.makeText(
getApplicationContext(),
URL.getText().toString()
+ " adresi ykleniyor...",
Toast.LENGTH_SHORT).show();
if (InternetKontrol())
webV.loadUrl("http://"+URL.getText().toString());
else
BaglantiHatasiVer();
} else {
Toast.makeText(getApplicationContext(), "Geersiz Adres",
Toast.LENGTH_SHORT).show();
}
}
});
Anasayfa.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
if (InternetKontrol())
webV.loadUrl("http://www.google.com.tr");
else
BaglantiHatasiVer();
}
});
Geri.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
if (webV.canGoBack()) {
webV.goBack();
}
}
});
Ileri.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
if (webV.canGoForward()) {
webV.goForward();
}
}
});
}
private class MyWebViewClient extends WebViewClient {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return true;
}
}
public void BaglantiHatasiVer() {
AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(
MainActivity.this);
alertDialogBuilder.setTitle("Sunucu Hatas");
alertDialogBuilder.setMessage(
"internet balantnz kontrol edip tekrar deneyin")
.setCancelable(true);
AlertDialog alertDialog = alertDialogBuilder.create();
alertDialog.show();
}
//noinspection SimplifiableIfStatement
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
}
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
Uygulamann altrlmas..
Android Studio Uygulama 3
zinleri aldktan sonra uygulamamzn icon'u deitirelim. Gzel bir grnt elde
edelim. Mipmap iine kk iconu atn. Dier lambalarda kaydedin. Bunlar
uygulamada mesela kapalyken gri olann, akkende sar olann gstereceiz.
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity"
android:background="#cae5e0">
<ImageButton
android:id="@+id/btnSwitch"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_marginTop="100dip"
android:src="@drawable/btn_switch_on"
android:background="@null"
android:contentDescription="@null"
/>
</RelativeLayout>
package com.umiitkose.myapplication;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.pm.PackageManager;
import android.hardware.Camera;
import android.hardware.Camera.Parameters;
import android.media.MediaPlayer;
import android.media.MediaPlayer.OnCompletionListener;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.ImageButton;
import com.umiitkose.myapplication.R;
ImageButton btnSwitch;
private Camera camera;
private boolean flashAcik;
private boolean flashVarm;
Parameters params;
MediaPlayer mp;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btnSwitch = (ImageButton) findViewById(R.id.btnSwitch); //ImageButton'u tanmladk
//lk ilem kamerann flash'nn olup olmad
flashVarm =
getApplicationContext().getPackageManager().hasSystemFeature(PackageManager.FEATURE_CAMERA_
FLASH);
if (!flashVarm) {
//FlashYoksa alertDialog ile ekrana flash'n olmadn kardk
AlertDialog alert = new AlertDialog.Builder(MainActivity.this).create();
alert.setTitle("HATA");
alert.setMessage("Bu aygt Flash desteklemiyor");
alert.setButton("Tamam", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
// Tamam'a basnca uygulamay kapatyoruz.
finish();
}
});
alert.show();
return;
}
// camera'ya eriiyoruz
cameraAc();
/*
* Button'a her tklandnda olacaklar. Flash aksa kapat, Kapalysa a
*/
btnSwitch.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (flashAcik) { // Flash Acik true dncek. Eer Flash Aksa
Kapatcak
flashKapat();
} else {
// Ak deilse button'a basnca acak
flashAc();
}
}
});
}
/*
* Get the camera
*/
private void cameraAc() {
if (camera == null) {
camera = Camera.open();
params = camera.getParameters();
}
}
/*
* Flash' ama ksm burada
*/
private void flashAc() {
if (!flashAcik) {
if (camera == null || params == null) {
return;
}
params = camera.getParameters();
params.setFlashMode(Parameters.FLASH_MODE_TORCH);
camera.setParameters(params);
camera.startPreview();
flashAcik = true;
/*
* Flash' kapatma ksm
*/
private void flashKapat() {
if (flashAcik) {
if (camera == null || params == null) {
return;
}
params = camera.getParameters();
params.setFlashMode(Parameters.FLASH_MODE_OFF);
camera.setParameters(params);
camera.stopPreview();
flashAcik = false;
/*
* Button'un deitirmesi
* */
private void toggleButtonImage(){
if(flashAcik){
btnSwitch.setImageResource(R.drawable.flash_ac);
}else{
btnSwitch.setImageResource(R.drawable.flash_kapa);
}
}}
Bunun gibi daha bir ok site var. Benim aklma gelenler uan bunlar. Daha ok
internette aratrma yaparak zaman geiriyorum. Ama en ok problemlerime zm
bulan siteler bunlard. Umiitkose.com da benim sitem. Takip etmeyi unutmayn. En
ksa zamanda Google play de uygulamalarm olucak. Ve bu kitabn devam yazlar
orada yaynlancak. Giri yaptmza gre artk ileri daha da zorlatrma vakti geldi.
Herkese iyi okumalar. Size bu kitap umarm bieyler katmtr.