kodbankasi http://kodbankasi.org/kodbankasi

Çekilen Resmi Arkaplan Olarak Ayarlama (Kamera – 2)

Android programlama makalelerimizde bir önceki uygulamada kamera kullanmayı göstermiştim. Şimdi ise kamerayla resim çektikten sonra nasıl arkaplan olarak ayarlanacağından bahsedeceğim. isterseniz önceki uygulamadaki kodları hatırlayalım.

kamera2

startActivityForResult metodu için ekrana sağ tıklayıp -> Source -> Override/Implements Methods içerisinden onActivityResult metodunu uygulamamıza eklememiz gerekiyor. Bu işlemi yaptıktan sonra şu kodların uygulaması eklenmiş olması gerekir.

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
// TODO Auto-generated method stub
super.onActivityResult(requestCode, resultCode, data);
}
}

BU metodun içerisine if metodu içerisinde resultkodumuzun doğru döndüğü takdirde yapılacak işlemleri yazmamız gerekiyor.Resmi kullanabilmemiz için ise Bitmap sınıfından yararlanmamız gerekiyor. Yani onActivityResult metodunun son hali aşağıdaki gibi olmalı :

</pre>
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
// TODO Auto-generated method stub
super.onActivityResult(requestCode, resultCode, data);
if(requestCode == RESULT_OK){
Bundle resim = data.getExtras();
Bitmap bmp = (Bitmap) resim.get("data");
iv.setImageBitmap(bmp);
}
}
<pre>

Result metodu içerisinde bir de bundle oluşturuyoruz. Çünkü android programlamada veri aktarımlar için Bundle lar kullanılır.  Bütün bu işlemlerden sonra artık arkaplan butonumuzun tıklandığında hangi işlemleri yapacağını yazabiliriz. Butona click yazmadan önce resim için izin almamız gerekiyor. Bunun için aşağıdaki kodu manifest dosyamızın içerisine application tag’inin üzerine aşağıdaki kodu yapıştırıyoruz.

<uses-permission android:name="android.permission.SET_WALLPAPER"/>

Arkapaln ayarlama butonumuzun click’ine try-catch bloğu içerisinde aşağıdaki kodları ekliyoruz.

try{
getApplicationContext().setWallpaper(bmp);
}catch (IOException e) {
// TODO: handle exception
e.printStackTrace();
}

Bu makalede yazdığımız metodları aşağıdaki resimden de bakabilirsiniz :

kamera4

Bütün kodlarımız bu kadar. Yalnız program emülatörde çalışmayacağından dolayı sadece telefonunuzdan deneyebilirsiniz. Uygulamanın bütün kodlarını aşağıya ekliyorum. Bir sorununuz olduğunda yorum kısmında sorabilirsiniz, elimden geldiğince yardımcı olmaya çalışıyorum.


MainActivity.java

package com.example.kamera;
import java.io.IOException;
import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.graphics.Bitmap;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ImageView;
public class MainActivity extends Activity implements OnClickListener{
Button resimCek , Duvarkagidi;
ImageView iv;
final static int kamera = 0;
Bundle resim;
Bitmap bmp;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
resimCek = (Button)findViewById(R.id.bresimCek);
resimCek.setOnClickListener(this);
iv= (ImageView)findViewById(R.id.imageView1);
}
@SuppressWarnings("deprecation")
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
switch (v.getId()) {
case R.id.bDuvarkagidi:
try{
getApplicationContext().setWallpaper(bmp);
}catch (IOException e) {
// TODO: handle exception
e.printStackTrace();
}
break;
case R.id.bresimCek:
Intent i = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(i, kamera);
break;
}
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
// TODO Auto-generated method stub
super.onActivityResult(requestCode, resultCode, data);
if(requestCode == RESULT_OK){
resim = data.getExtras();
bmp = (Bitmap) resim.get("data");
iv.setImageBitmap(bmp);
}
}
}

activity_main.xml

<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/bresimCek"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:text="ResimCek" />
<Button
android:id="@+id/bDuvarkagidi"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/bresimCek"
android:layout_below="@+id/bresimCek"
android:text="DuvarKagidiAyarla" />
<ImageView
android:id="@+id/imageView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/bDuvarkagidi"
android:layout_alignParentBottom="true"
android:layout_alignRight="@+id/bDuvarkagidi"
android:layout_below="@+id/bDuvarkagidi"
android:src="@drawable/ic_launcher" />
</RelativeLayout>

Bir önceki yazımız olan Android Spinner kullanımı başlıklı yazımızı da inceleyebilirsiniz.

7 Yorumlar

  1. selamün aleyküm öncelikle. bu bilgileriniz için tşk ediyorum kaç gündür uğraşıyorum bi türlü yapamıyorum benim bi kaç resimlerim var .. işte bu resimleri programıma koyup bir butun oluşturup o bun resimle arka plan olarak kaydet yapsın . unu nasıl yapacağız yardımcı olabilir misiniz ? ne demek istediğim anladınız inşallah yani bir butun yapıp içindeki resimleri istetediğim resmi arka plan olarak veya duvar kağıdı olarak ayarlayabileyim şimdiden teşekkürler

    • Galeri yaparak gerçekleştirebilirsiniz. Her resmi for döngüsü içerisine atıp buton onclicklerine yaptığım programdaki kodları koyarsanız olur sanırım. Daha detaylı bilgi verirseniz daha çok yardımcı olabilirim.

  2. merhaba resim çekiyorum ama duvar kağıdı yap diyince olmuyor ?

  3. merhaba resim çekiyorum ama duvar kağıdı yap diyince olmuyor ?.Uygulama durduruldu deyip kapandı.
    cevabı mailime gönderebilir misiniz

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak.

Bu yazı da ilginizi çekebilir !

accelerometer

Android Sensör Kullanımı

Bir süre ara verdiğimiz android derslerimize kaldığımız yerden devam ediyoruz. Bir önceki makalemizde options menü ...