18 Şubat 2016 Perşembe

Kamerayı Kullanmak

Video Kayıt
Video kayıt şöyle başlatılır.
private static final int REQUEST_VIDEO_CAPTURE = 4;
Intent takeVideoIntent = new Intent(MediaStore.ACTION_VIDEO_CAPTURE);
if (takeVideoIntent.resolveActivity(getPackageManager()) != null) {
     startActivityForResult(takeVideoIntent, REQUEST_VIDEO_CAPTURE);
}
Kayıt bitince dosya şöyle alınır.
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if (resultCode == RESULT_OK){
        switch (requestCode){
           Uri videoUri = data.getData();
           //Do something with the video
        }



Vibrator Sınıfı

constructor
Şöyle yaparız.
Vibrator vib = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE);
vibrate metodu
Şöyle yaparız.
vib.vibrate(500);


17 Şubat 2016 Çarşamba

SQLiteStatement Sınıfı

constructor
Şöyle yaparız.
SQLiteDatabase db = ...;
String sql = "...";
SQLiteStatement stm = db.compileStatement(sql);
bindString metodu
Sql cümlesi içindeki ? karakteri ile biten yere bir değer atar. Şöyle yaparız.
insert.bindString(1, ...);
execute metodu
Constructor'da verilen insert, update gibi bir cümleyi çalıştırır. Şöyle yaparız.
insert.execute();

30 Aralık 2015 Çarşamba

DownloadManager Sınıfı

enqueue metodu
Bir DownloadManager.Request nesnesi yaratarak indirme işlemini başlatırız. İşlemin sonucunu BroadcastReceiver ile alırız. Şöyle kullanırız.
String url = ...; File file =...;

DownloadManager dm = (DownloadManager) getSystemService(DOWNLOAD_SERVICE);
DownloadManager.Request req = new DownloadManager.Request(Uri.parse(url));
req.setDestinationUri(Uri.fromFile(file));
req.setTitle("Some title");

BroadcastReceiver receiver = new BroadcastReceiver() {
  @Override
  public void onReceive(Context context, Intent intent) {
    unregisterReceiver(this);
    
    }
  };
registerReceiver(receiver, new IntentFilter(
                DownloadManager.ACTION_DOWNLOAD_COMPLETE));
dm.enqueue(req);
Toast.makeText(this, "Download started", Toast.LENGTH_SHORT).show();

24 Kasım 2015 Salı

URI'den Path Almak

Giriş
Intent ile başlatılan bir çok işlem sonuç olarak bize bir URI döner. URI'den path'i almak çok kolay değil.

MediaStore.Images
Şöyle alırız.
private String getRealPathFromURI(Uri contentURI) {
  Cursor cursor = getContentResolver().query(contentURI, null, null, null, null); 
  cursor.moveToFirst(); 
  int idx = cursor.getColumnIndex(MediaStore.Images.ImageColumns.DATA); 
  return cursor.getString(idx); 
}
MediaColumn
Şöyle alırız.
public String getRealPathFromURI(Uri contentUri) {
  String[] proj = { MediaColumns.DATA };
  Cursor cursor = managedQuery(contentUri, proj, null, null, null);
  int column_index = cursor.getColumnIndexOrThrow(MediaColumns.DATA);
  cursor.moveToFirst();
  return cursor.getString(column_index);
}
veya şöyle alırız.
private String getRealPathFromURI(Uri selectedVideoUri) {
  String filePath;
  final String[] filePathColumn = new String[] { MediaColumns.DATA };

  Cursor cursor = getContentResolver().query(selectedVideoUri,
            filePathColumn, null, null, null);
  cursor.moveToFirst();

  int columnIndex = cursor.getColumnIndex(filePathColumn[0]);
  filePath = cursor.getString(columnIndex);
  cursor.close();
  return filePath;
}







1 Kasım 2015 Pazar

TimePickerDialog Sınıfı

Giriş
Bu sınıf bir dialog olarak tek başına açılabileceği gibi, fragment içinde de kullanılabilir.
Fragment içinde şöyle kullanılır. OnCreateDialog içinde nesnenin yaratıldığı görülebilir.
public class TimePickerFragment extends DialogFragment implements
        TimePickerDialog.OnTimeSetListener {

    @Override
    public Dialog onCreateDialog(Bundle savedInstanceState) {

        return new TimePickerDialog(getActivity(), this, hour, minute,
                DateFormat.is24HourFormat(getActivity()));
    }

    public void onTimeSet(TimePicker view, int hour, int minute) {
      ...    
    }
}

DatePickerDialog

DatePickerDialog
Bu sınıf bir dialog olarak tek başına açılabileceği gibi, fragment içinde de kullanılabilir.
Constructor
İmzası şöyle
public DatePickerDialog (
    Context context,
    DatePickerDialog.OnDateSetListener callBack,
    int year,
    int monthOfYear,
    int dayOfMonth)
getDatePicker
Dialog içindeki DatePicker nesnesine erişmemizi sağlar.Bugün ve sonraki 5 günü göstermek için şöyle yaparız.
cal = Calendar.getInstance();
DatePickerDialog dialog = new DatePickerDialog(...);
dialog.getDatePicker().setMinDate(System.currentTimeMillis());
cal.add(Calendar.DAY, 5);
dialog.getDatePicker().setMaxDate(cal.getTimeInMillis());
DatePickerDialog.OnDataSetListener
İmzası şöyledir. Seçilen tarihi verir.
new DatePickerDialog.OnDateSetListener() {
  @Override
  public void onDateSet(DatePicker view, int year,int month, int day) {
  }
};
show metodu
Şöyle kullanılır
DatePickerDialog datepickerdialog = new DatePickerDialog
(this,
 this, //OnDateSetListener
 year,
 month,
 day
);
datepickerdialog.show();
DatePicker
xml'de şöyle tanımlanır
<DatePicker
    android:id="@+id/dpResult"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" />
init metodu
Şöyle kullanırız. Init metod birden fazla kez çağrılabilir.
DatePicker dpResult = (DatePicker) findViewById(R.id.dpResult);
Calendar c = Calendar.getInstance();
intyear = c.get(Calendar.YEAR);
int month = c.get(Calendar.MONTH) ;
int  day = c.get(Calendar.DAY_OF_MONTH);
dpResult.init(year, month, day, null);