#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

10 Nisan 2019 Çarşamba

Spring configuration

Spring projelerinde konfigurasyon dosyalari ornegi asagidaki resimlerde yer almaktadir.

web.xml


servlet_config.xml

Context initialization failed Hatasi

Pluralsight ta yer alan Spring eğitimini yapmaya calisirken ilk örnekte Server loglarinda asagidaki hatayi aldim.
 
SEVERE: Context initialization failed
java.lang.IllegalArgumentException
SEVERE: StandardWrapper.Throwable
java.lang.IllegalArgumentException
SEVERE: Allocate exception for servlet fitTrackerServlet
java.lang.IllegalArgumentException
 
 
Tomcat v8.0 kullaniyordm
 
Yardim aldgim link asagidaki gibidir. 
 
https://stackoverflow.com/questions/32416540/http-status-500-servlet-init-for-servlet-fittrackerservlet-threw-exception
 
jdk
 
Tomcat v7.0 kurmak yerine Pom.xml deki versionlari asagidaki gibi değiştirdim.
 
<dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-webmvc</artifactId>
        <version>3.2.3.RELEASE</version>
    </dependency>        
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-jdbc</artifactId>
        <version>3.2.3.RELEASE</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-orm</artifactId>
        <version>3.2.3.RELEASE</version>
    </dependency>

ANDROID JSOUP

Merhaba,
Bu yazimdan Jsoup kullanimi ile ilgili ornek yapacagim.
Oncelikle Jsoup nedir kisaca ondan bahsedelim. Jsoup html parse eden yani ayristiran bir java kutuphanesidir. Jsoup ile html sayfalarindan css elemanlarini kullanarak veri cekebilir ve bu verileri uygulamamiz icinde kullanabiliriz.

Dezavantaji ise web sitesinin html elemanlarinda degisiklik yapildiginda istedigimiz veriyi cekemeyebiliriz.

Oncelikle ilk adim olarak build.gradle a jsoup u ekleyelim.

compile 'org.jsoup:jsoup:1.11.3'



Simdi de Manifest e gidip internet izni verelim cunku uygulamamiz internetten veri cekecek.

Simdi layoutumuza bir buton koyalim ve o butona tiklandiginda http://sengamze.blogspot.com/2019/04/android-resim-ekleme.html
bu linkte yer alan yazimin basligini ekrana yazdirsin.

package gykizmir.com.jsoupexample;

import android.app.ProgressDialog;
import android.os.AsyncTask;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;

import java.io.IOException;


public class MainActivity extends AppCompatActivity {

    Button learnTitleBtn;
    TextView titleOfBlog;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        titleOfBlog = (TextView) findViewById(R.id.learnTitle);

        learnTitleBtn = (Button) findViewById(R.id.learnTitle);

        learnTitleBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                new Title().execute();
            }
        });


    }

    private class Title extends AsyncTask<Void, Void, Void>{

        String url = "http://sengamze.blogspot.com/2019/04/android-resim-ekleme.html";
        String title;
        ProgressDialog progressDialog;

        @Override
        protected void onPreExecute(){
            super.onPreExecute();
            progressDialog = new ProgressDialog(MainActivity.this);
            progressDialog.setTitle("Jsoup Example");
            progressDialog.setMessage("Title is retrieving");
            progressDialog.setIndeterminate(false);
            progressDialog.show();
        }

        @Override
        protected Void doInBackground(Void... params) {
            try {
                Document document = Jsoup.connect(url).get();
                title = document.title();
            } catch (IOException ex){
                ex.printStackTrace();
            }

            return null;
        }

        @Override
        protected void onPostExecute(Void avoid){
            titleOfBlog.setText(title);
            progressDialog.dismiss();
        }
    }

}




layoutumuz ise asagidaki gibi olmali.

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context="gykizmir.com.jsoupexample.MainActivity">

    <Button
        android:id="@+id/learnTitle"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Learn Title"/>


    <TextView
        android:id="@+id/title"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="center_horizontal"
        android:text="Title" />


</LinearLayout>




Calistirdigimizda ise ekran goruntusu asagidaki gibidir.

          

4 Nisan 2019 Perşembe

Android - Move layouts up when keyboard is shown

Android uygulamalarimizda ekranimizdaki ogeler ekrani kapliyorsa o ekranda klavey acildiginda itemlerin bazilari klavyenin altinda kalir. Bu durumda ilgili edittex secildiginde o layout yukari tasinir ve ilgili item in gorunmesi saglanir.

Bunu yapmamizi saglayan kod parcasi ve nasil yapilcagi asagidadir.

Activity nin onCreate() methoduna alttaki kod yapistirilir.

getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN);

3 Nisan 2019 Çarşamba

Android Resim Ekleme

Merhaba,
Bir android projesi olusturdugumuzda android icinde var olan resimleri nasil ekleriz onu anlatacagim.
File -> New -> Vector Asset diyoruz ve ekrana gelen icon listesinden birini seciyoruz.


Daha sonra layoutlarda @drawable altindan ekledigimiz dosya adini veriyoruz.


<item    android:id="@+id/navigation_diet"    
android:icon="@drawable/ic_room_service_black_242dp" 
 android:title="@string/title_diet" />


24 Mart 2019 Pazar

Android - R gives error - R leri gormeme hatasi

Merhaba,
Eger android studio da yeni bir proje olusturdugumuzda R kirmizi oluyor ve hata veriyorsa

FILE -> Invalidate Cache and Restart diyerek editorumuzu yeniden baslatirsak sorun cozuluyor.

Iyi calismalar 😊

GELECEĞİ YAZAN KADINLAR PROJESİ

Merhaba,
Bugun benim de bir parcasi oldugum projeden bahsetmek istiyorum. Turkcell kadinlar icin Android egitimi duzenliyor. Sinif ici / online egitim verip daha sonra bir proje gelistirmelerini istiyor, ve basarili olan kadinlari bir cok odul bekliyor. Hem projelerine destek alabiliyor hem is imkanlarina sahip oluyorlar hem de teknolojinin en guzel inceliklerini ogrenip bir proje gelistirebiliyorlar.

2017 yilinda ben de ogrenci olarak bu projeye basvurmustum ve haziran - temmuz aylarinda egitimlerimi almistim. O zaman universiteden mezun olmus, ise baslayacagim Eylul ayina bostum ve o boslugumu boyle bir surecle degerlendirmistim.

Ve artik eminim ki zamanimi degerlendirme seklim cok guzel bir yontemmis. Cunku hem android ogrendim ve bir proje gelistirdim hem de yari finale katilma hakki kazanmistim. Projeme buradan ulasabilirsiniz.

Kendi kendime de cok guzel seyler basarilara imza atabilecegimi kanitlamis oldum 😏

Daha sonra Turkcell benimle iletisime gecip bu sene projenin tekrar duzenlecegini ve egitmen olmami teklif etti. Tabiki bu teklife atladim. Cunku bu projeden ben yararlandiysam ben bir seyler ogrendiysem bunu diger insanlarla da paylasmaliyim ki onlar da yararlansin, hem de ulkemizde kadinlarimiz her alanda aktif olsun ☺

Kabul eden egitmen adayi arkadaslarimizla birlikte Turkcell in daveti uzerine Istanbul a gittik. Burada hem surec hakkinda bilgi edindik hem de ekipce bir proje gelistirdik. O projeme de buradan ulasabilirsiniz.

Daha sonra da Izmir Turkcell Plaza da katilimcilara gun boyu suren bir Java egitimi verdik.

Simdi ise Android egitimleri ile devam ediyoruz. Her sey gibi bilgi de paylastikca guzel ve degerli 😊😊😊😊








23 Mart 2019 Cumartesi

ANDROID - FINE LOCATION VE COARSE LOCATION FARKI

Android de uygulamamiz eger konuma erisme ihtiyaci duyuyorsa o zaman AndroidManifest ten konum erisimine izin vermemiz gerekir.

2 izin tipinin farkindan bahsedecegim:


1. The Fine location provides better and accurate locations.

Requires permission,

ACCESS_FINE_LOCATION

<uses-permission android:name=”android.permission.ACCESS_FINE_LOCATION” />

It gives permission for using both GPS_PROVIDER and NETWORK_PROVIDER

or  GPS_PROVIDER only for determining the position.

2. The Coarse location provides less accurate locations.

Requires permission,

ACCESS_COARSE_LOCATION

<uses-permission android:name=”android.permission.ACCESS_COARSE_LOCATION” />

It gives permission for using both NETWORK_PROVIDER only for determining the position.




26 Ocak 2019 Cumartesi

RecyclerView “cannot resolve symbol” error - hatasi - Android Studio

Merhaba,
Android Studio da RecyclerView kullanmak istedigimizde su sekilde bir hata alabiliyoruz.
Bu hatanin cozumu icin app seviyesindeki build.gradle dosyamiza alttaki kodu ekledigimizde basarili bir sekilde import edip hatamizi cozebiliriz.

compile 'com.android.support:design:26.0.0-alpha1'

13 Ocak 2019 Pazar

GELISTIRICI SECENEKLERI NASIL ACILIR? ANDROID

Merhaba,

Bu yazimda Android cihazlarda gelistirici secenekleri nasil acilir onu anlatacagim.

Android uygulamalari gelistirirken uygulamalarimizi bir emulator uzerinde calistiririz. Bu emulator genelde bize android studio nun saglamis oldugu emulator olabilir. Ancak bu emulatorler genelde cok yavas calisir ve istedigimiz performansi vermeyebilir. Bu durumda kendi android cihazlarimiz uzerinde de yazdigimiz uygulamayi test edebiliriz. Bunun icin Android cihazimizin oncelikle usb kablosuyla bilgisayarimiza bagli olmali ve android cihazimizin Gelistirici secenekleri acik olmalidir. Bu ozellik normalde kapalidir ve bizim aktif etmemiz gerekir.
Peki bu ozellik nasil acilir onu anlatalim:

Oncelikle AYARLAR -> CIHAZ HAKKINDA -> YAZILIM BILGISI ekranini acalim. Acilan ekranda YAPIM NUMARASI secenegini 4 5 kez ard arda tikladigimizda bu ozellik acilir. Ayarlar menusune geri dondugumuzde GELISTIRICI SECENEKLERI butonunun yer aldigini goruruz.

Gelistirici Secenekleri ekranindan USB HATA AYIKLAMA secenegini aktif hale getirelim.

Artik bu ozellik aktif hale gelmistir. Android Studio da projeyi run ederken cihaz sectigimiz ekranda artik bizim cihazimizda gorunur hale gelmistir.

Iyi calismalar.

Genymotion'a Play Store Yukleme

Merhaba,

Bu yazimda Genymotion a Google Play Store nasil yuklenir bunu gosterecegim.

Bunun icin oncelikle emulatorle uyumlu zip dosyasini buradan indirelim.

Daha sonra bu zipi cikartmadan Genymotion device miza surukle birak yapalim.

Ekrana gelen uyariya OK diyelim.

Daha sonra islem tamamlaninca device i yeniden baslatmamizi isteyecek. Yeniden baslatalim.

Cihaz acildiginda herhangi bir google service ine tiklayarak login olalim.

Ben Gmail uzerinden login oldum.

Verilen hatalari simdilik onemsemeyelim. Cunku basarili bir sekilde login olunduktan sonra google play icin update etmemizi isteyecek ve hatalarimiz orada cozulecek.

 Login olunduktan sonra Google service lerini Play Store uzerinden update edelim.

Sorunumuz cozulmus olacaktir.

Iyi calismalar.

Kaynak : https://medium.com/@eferhatg/genymotiona-google-play-store-yukleme-2-cab6b2ee65a2

6 Ocak 2019 Pazar

Android Studio Hizlandirmak Icin

Merhaba bu yazimda Android Studio yu nasil hizlandirabilecegimizi anlatacagim.
Bunu internette arastirirken stackowerflow da buldum. Ve gercekten ise yaradi. Performansta gozle gorulur artis oldu. Sizde deneyebilirsiniz.

Tips to make android studio fast:
Enable Offline Work:
  1. Click File -> Settings. Search for "gradle" and click in Offline work box.
  2. Go to Compiler (in same settings dialog just below Gradle) and add --offline to Command-line Options text box.
Improve Gradle Performance
gradle can be optimized too. The easy way is to modify the settings in global gradle.properties(create it if not exists in the following folders: Windows - C:\users\your_name\.gradle\; Linux- /home/<username>/.gradle/; Mac- /Users/<username>/.gradle/; ) and in that file, add these two lines:
org.gradle.daemon=true
org.gradle.parallel=true
Linki de asagiya birakiyorum.

https://stackoverflow.com/questions/30817871/android-studio-is-slow-how-to-speed-up

16 Aralık 2018 Pazar

ANDROID GOOGLE MAPS KULLANIMI


Merhaba bu yazimda Google Maps kullanimini bir ornekle anlatacagim.

Bu projede yapacagimiz seyleri kisaca anlatmak gerekirse : Oncelikle bir edittext e nerenin konumunu gormek istedigimizi girecegiz.
Ve yanindaki butona tikladigimizda haritada orayi bulup harita uzerinde marker ile bize gosterecek.
Altta ise harita gorunumunu degistirebilecegimiz buton olacak. Uydu gorunumu ise normal gorunume cevirebilecegiz, normal ise
uydu gorunume.

En sag altta ise haritayi yakinlastirip uzaklastirabilecegimiz butonlar yer alacak.
Simdilik uygulamamiz calistiginda nasil bir gorunumu olacagini asagidaki ekran resimleri uzerinden bakabilirsiniz.


 



Oncelikle android studio da new project dedikten sonra activity olarak Google Maps activity i seciyoruz. Bu sekilde acitivity_maps.xml
de map tnaimli olarak geliyor.
Simdi ise res/values altinda yer alan google_maps_api.xml da 7. satirdaki linki tarayicimizda aciyoruz. Buradan Api anahtari olusturup
satir 23 de yer alan YOUR KEY HERE kismina yapistiriyoruz. Bunu yaptigimizda keyimiz otomatik olarak Android Manifest e de eklenmis olacak.
Cunku ikisinde de ayni key olan google_maps_key yer aliyor.

Simdi ise kodlamaya gecelim.
Buradaki kodlamamizin mantigi su sekilde olacak. Edittext e girilen degeri alip onun string karsiligini bulacagiz.
Daha sonra girilen deger null degilse veya bos degilse o halde Geocoder classindan isim ile enlem boylam bulan
getFromLocationName methoduna input verecegiz. Bu sekilde girilen degerin enlem boylam karsiligini bulacagiz. Ve map te
o yere marker ekleyip kamerayi oraya yaklastiracagiz.

activity_maps.xml




MapsActivity.java
package com.example.gamze.googlemapsex02;

import android.location.Address;
import android.location.Geocoder;
import android.support.v4.app.FragmentActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ZoomControls;

import com.google.android.gms.maps.CameraUpdateFactory;
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.OnMapReadyCallback;
import com.google.android.gms.maps.SupportMapFragment;
import com.google.android.gms.maps.model.LatLng;
import com.google.android.gms.maps.model.MarkerOptions;

import java.io.IOException;
import java.util.List;

public class MapsActivity2 extends FragmentActivity implements OnMapReadyCallback {

    private GoogleMap mMap;
    private final static int REQUEST_LOCATION=90;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_maps2);
        // Obtain the SupportMapFragment and get notified when the map is ready to be used.
        SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager()
                .findFragmentById(R.id.map);
        mapFragment.getMapAsync(this);

        final Button uyduBtn = (Button) findViewById(R.id.uydu);
        uyduBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                if(mMap.getMapType() == GoogleMap.MAP_TYPE_NORMAL){
                    mMap.setMapType(GoogleMap.MAP_TYPE_SATELLITE);
                    uyduBtn.setText("NORMAL");
                }else{
                    mMap.setMapType(GoogleMap.MAP_TYPE_NORMAL);
                    uyduBtn.setText("UYDU");
                }
            }
        });

        ZoomControls zoomControls = (ZoomControls) findViewById(R.id.zoomControl);

        zoomControls.setOnZoomInClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                mMap.animateCamera(CameraUpdateFactory.zoomIn());
            }
        });

        zoomControls.setOnZoomOutClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                mMap.animateCamera(CameraUpdateFactory.zoomOut());
            }
        });

        final EditText gidilecekYer = (EditText) findViewById(R.id.gidilecekYer);
        Button bulBtn = (Button) findViewById(R.id.bul);


        bulBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                String gidilecekYerAdi = gidilecekYer.getText().toString();
                if (gidilecekYerAdi != null && !gidilecekYerAdi.equals("")){
                    Geocoder geocoder = new Geocoder(MapsActivity2.this);
                    List
addressList = null; try{ addressList = geocoder.getFromLocationName(gidilecekYerAdi, 1); }catch (IOException ex){ ex.printStackTrace(); } Address address = addressList.get(0); LatLng latLng = new LatLng(address.getLatitude(), address.getLongitude()); mMap.animateCamera(CameraUpdateFactory.newLatLng(latLng)); mMap.addMarker(new MarkerOptions().position(latLng).title("Burasi: "+ gidilecekYerAdi)); } } }); } /** * Manipulates the map once available. * This callback is triggered when the map is ready to be used. * This is where we can add markers or lines, add listeners or move the camera. In this case, * we just add a marker near Sydney, Australia. * If Google Play services is not installed on the device, the user will be prompted to install * it inside the SupportMapFragment. This method will only be triggered once the user has * installed Google Play services and returned to the app. */ @Override public void onMapReady(GoogleMap googleMap) { mMap = googleMap; // Add a marker in Sydney and move the camera LatLng sydney = new LatLng(-34, 151); mMap.addMarker(new MarkerOptions().position(sydney).title("Marker in Sydney")); mMap.moveCamera(CameraUpdateFactory.newLatLng(sydney)); } }










9 Aralık 2018 Pazar

Android Uygulamalara Dil Secenegi Ekleme

Merhaba bu yazimda android projelerine dil destegi eklemeyi anlatacagim. Diyelim bir uygulamamiz var ve bu uygulamanin baska dil secili telefonlarda o dilde calismasini istiyoruz. Burada yapmamiz gereken uygulamamizdaki her kelimenin diger dildeki(uygulamanin calistigi telefon dilinde) karsiligini yazacagimiz bir dosya olusturmak.

Bunun icin res klasorune sag tiklayip New -> Android resource directory -> Karsimiza cikan ekrandan Locale secip -> Gelen listeden istedigimiz dili secmektir.

Ornegin Ingilizce icin bu sekilde bir secim yaptigimizda values-en adinda, Almanca icin ise values-de adinda bir klasor olusturacaktir. Simdi ise yapmamiz gereken her values klasorunun altina strings.xml adinda bir resource file olusturmak. (Bu arada gorunumu Project olarak degistirelim. Ben Android gorunumundeyken olusturdugum klasorleri gorememistim)

Dosyalarin nasil gorundugune alttaki resimden bakabilirsiniz.



















Simdi ise ingilizce karsiligi olmasi gereken kelimeleri strings.xml den kopyalamak ve values-en e altindaki strings.xml e yapistirmak. Orada ingilizce karsiliklarinii yazmak. Asagida bir ornek yapacagim.

Alttaki turkcedeki strings.xml

<resources>
    <string name="app_name">CheckBoxExample</string>
    <string name="btnName1">GONDER</string>
    <string name="text1"> Cinsiyetinizi secin</string>
</resources>





Alttaki ise values-en alttaki strings.xml

<?xml version="1.0" encoding="utf-8"?><resources>
    <string name="app_name">Ornek Uygulama</string>
    <string name="btnName1">SEND</string>
    <string name="text1">Choose your gender</string>
</resources>

Ancak bu sekilde ayarlama yaptiktan sonra ekranda gosterecegimiz mesajlarin

statik degil dinamik olmasi gerekir. Ornegin bir buton icin :

<Button    
  android:id="@+id/sec"
  android:text="@string/btnName1"    
  android:gravity="center"  
  android:layout_width="wrap_content"    
android:layout_height="wrap_content" />

Uygulamanin calistigi telefondaki dil Turkce ise turkce , ingilizce ise ingilizce 
karsiliklari yazar. 
Iyi calismalar

2 Aralık 2018 Pazar

Android Checkbox Kullanimi

Merhaba bu yazimda bir android uygulamasinda checkbox kullanimini gorecegiz. Bunun icin kucuk bir ornek yapacagim.

Kullanicinin daha once yasadigi sehirleri secmesini istedigim ve daha sonra butona bastiginda bu sehirleri gosteren bir uygulama yapalim.

Bunun icin oncelikle android projemizi olusturalim. Herhangi bir izne gerek duymuyor uygulamamiz.

activity_main.xml


Bu arada bazi stringleri res -> values -> strings.xml doyasindan aldim denemek icin. Sizde oyle yapabilirsiniz.



Simdi de MainActivity.java ya bakalim.






Ekran Goruntulerimiz alttaki gibidir.


8 Ağustos 2017 Salı

ANDROID - FIREBASE UPDATE OPERATION

I want to update my record in my firebase database table. I will update order cost as 10 which has primary key as: "20170807192734".




Here is the query I should write to update:



final FirebaseDatabase firebaseDatabase = FirebaseDatabase.getInstance();
DatabaseReference dbRef = firebaseDatabase.getReference("orders");
String primaryKey = "20170807192734";
dbRef.child(primaryKey).child("cost").setValue("10");


Firebase veritabanimdaki orders tablosundaki "20170807192734" primary key e sahip olan kayitin costunu 10 olarak guncellemek istersem yazmam gereken kodlar yukaridaki gibi olmalidir.

6 Ağustos 2017 Pazar

ANDROID - FIREBASE KULLANIMI

Android uygulamalarimizda veritabani islemleri icin ve bircok islem icin (ornegin bildirim) Firebase kullanabiliriz.

bu uygulamada firebase i uygulamama ekledim. Veritabanina iki tane tablo ekledim. Users ve siparis olmak uzere 2 tablo. bu iki tabloya kayit ekleme ve user tablosundaki kayitlari cekerek list view de gosterme isini yaptim. kodlar github hesabimda yer almaktadir.


11 Temmuz 2017 Salı

Installation failed with message Failed to finalize session : INSTALL_FAILED_INVALID_APK: Split lib_slice_0_apk was defined multiple times. It is possible that this issue is resolved by uninstalling an existing version of the apk if it is present, and then re-installing. WARNING: Uninstalling will remove the application data!


I get this error on Android Studio. Because I copied my project to another directory. When I run the project in the directory that I copied from, project run without any error.

If we want to run the project that is in new location, then there are some thing we need to do. From top menu, Build -> Clean Project then Build -> Rebuild Project. Then when we run, we do not get any error.

--------------------------------------------------------------------------------------------------------------------------

Projemi calistirirken Android Studio dan bu sekilde bir hata aldim. Hatayi arastirdigimda buldugum sonuclardan biri benim yasadigim duruma benziyordu. Projemi baska bir lokasyona kopyalamistim. Ve kopyaladigim yerdeki projeyi acinca bu sekilde bir hata aliyordum. Projeyi ilk bulundugu konumdan actigimda ise calistirdigimda hatasiz sekilde calisiyor.

Ancak yeni bulundugu konumdan calistirmak istiyorsak oncelikle ust menude yer alan Build -> Clean Project yapmaliyiz. Daha sonra yine Build -> Rebuild Project yapmaliyiz. Eger hatamiz devam ederse birkac kez tekrar etmeliyiz. Projemiz hatasiz calisacaktir.

8 Temmuz 2017 Cumartesi

ANDROID - SharedPreferences Kullanımı - Using SharedPreferences


Shared Preferences kullanarak uygulama kapansa bile kullanicinin bilgilerini koruyabiliriz. Bu sekilde tekrardan uygulamayi actiginda tekrardan login olmasina gerek olmaz. Bunun icin basit bir uygulama yaptim. Kodlar burada yer almakta. Ekran goruntuleri ise asagidadir.


By using SharedPreferences, even application closes,we can save the user's information. By this way when user again opens the application, there will be no need for user to login again. My code is in here. Screenshots of application is available in below.





24 Haziran 2017 Cumartesi

ANDROID - FOTOGRAF VE VIDEO CEKMEK - USING CAMERA AND VIDEO

Bu yazimda fotograf ve video cekmeyi ve bunlari ekranda gostermeyi anlatacagim. Bunun icin camera kullanacagiz.
Projemizi olusturup activity_main.xml layoutumuza iki tane button, imageView ve videoView ekleyecegim. Butonlardan birisi fotograf cekmek, digeri ise video cekmek icin olacak. ImageView resimleri gostermek, videoView ise cekilen videoyu gostermek icin kullanilacak.


activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:app="http://schemas.android.com/apk/res-auto"    xmlns:tools="http://schemas.android.com/tools"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:orientation="vertical"    tools:context="com.example.gamze.cameraandvideoexample.MainActivity">


    <Button        android:id="@+id/imageButton"        android:layout_width="match_parent"        android:layout_height="wrap_content"
        android:text="Take Picture" />

    <Button        android:id="@+id/videoButton"        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:text="Capture Video" />

    <ImageView        android:id="@+id/imageView"        android:layout_width="wrap_content"        android:layout_height="wrap_content" />
    <VideoView
        android:id="@+id/videoView"        android:layout_width="wrap_content"        android:layout_height="wrap_content" />
</LinearLayout>


Simdi ise MainActivity.java dosyamiza gerekli kodlari ekleyelim.


package com.example.gamze.cameraandvideoexample;

import android.content.Intent;
import android.graphics.Bitmap;
import android.provider.MediaStore;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.MediaController;
import android.widget.VideoView;

public class MainActivity extends AppCompatActivity {

    private ImageView imageView;
    private VideoView videoView;
    private static final int IMAGE_REQUEST =1;
    private static final int VIDEO_REQUEST = 2;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Button takePicButton = (Button) findViewById(R.id.imageButton);
        takePicButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                imageView = ((ImageView) findViewById(R.id.imageView));
                Intent pic_intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
                startActivityForResult(pic_intent, IMAGE_REQUEST);
            }
        });
        Button captureVideoButton = ((Button) findViewById(R.id.videoButton));
        captureVideoButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                videoView = (VideoView)findViewById(R.id.videoView);
                Intent video_intent = new Intent(MediaStore.ACTION_VIDEO_CAPTURE);
                startActivityForResult(video_intent,VIDEO_REQUEST);
            }
        });
    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if(resultCode != RESULT_OK) return;
        else if(requestCode == IMAGE_REQUEST){
            Bitmap image = (Bitmap)data.getExtras().get("data");
            imageView.setImageBitmap(image);
        }
        else if(requestCode == VIDEO_REQUEST){
            videoView.setVideoURI(data.getData());
            videoView.setMediaController(new MediaController(this));
            videoView.requestFocus();
            videoView.start();
        }
    }
}


Son durumda ekranimiz nasil gorunuyor ona bakalim.