Android - Kamera
Ini adalah dua cara berikut, di mana Anda dapat menggunakan kamera dalam aplikasi Anda
Menggunakan aplikasi kamera android yang ada di aplikasi kita
Langsung menggunakan Camera API yang disediakan oleh android di aplikasi kita
Menggunakan aplikasi kamera android yang ada di aplikasi kita
Anda akan menggunakan MediaStore.ACTION_IMAGE_CAPTURE untuk meluncurkan aplikasi kamera yang sudah ada yang terpasang pada ponsel Anda. Sintaksnya diberikan di bawah ini
Intent intent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
Selain yang disebutkan di atas, ada Intent lain yang tersedia yang disediakan oleh MediaStore. Mereka terdaftar sebagai berikut
Sr Tidak | Jenis dan deskripsi maksud |
---|---|
1 |
ACTION_IMAGE_CAPTURE_SECURE Ini mengembalikan gambar yang diambil dari kamera, saat perangkat diamankan |
2 |
ACTION_VIDEO_CAPTURE Ini memanggil aplikasi video yang ada di android untuk merekam video |
3 |
EXTRA_SCREEN_ORIENTATION Ini digunakan untuk mengatur orientasi layar menjadi vertikal atau lanskap |
4 |
EXTRA_FULL_SCREEN Ini digunakan untuk mengontrol antarmuka pengguna ViewImage |
5 |
INTENT_ACTION_VIDEO_CAMERA Maksud ini digunakan untuk meluncurkan kamera dalam mode video |
6 |
EXTRA_SIZE_LIMIT Ini digunakan untuk menentukan batas ukuran video atau ukuran pengambilan gambar |
Sekarang Anda akan menggunakan fungsi startActivityForResult () untuk meluncurkan aktivitas ini dan menunggu hasilnya. Sintaksnya diberikan di bawah ini
startActivityForResult(intent,0)
Metode ini telah didefinisikan di activitykelas. Kami menyebutnya dari aktivitas utama. Ada metode yang ditentukan di kelas aktivitas yang melakukan pekerjaan yang sama, tetapi digunakan saat Anda tidak memanggil dari aktivitas tetapi dari tempat lain. Mereka terdaftar di bawah ini
Sr Tidak | Deskripsi fungsi aktivitas |
---|---|
1 |
startActivityForResult(Intent intent, int requestCode, Bundle options) Ini memulai suatu aktivitas, tetapi dapat mengambil bundel opsi tambahan dengannya |
2 |
startActivityFromChild(Activity child, Intent intent, int requestCode) Ini meluncurkan aktivitas ketika aktivitas Anda adalah anak dari aktivitas lain |
3 |
startActivityFromChild(Activity child, Intent intent, int requestCode, Bundle options) Ini berfungsi sama seperti di atas, tetapi dapat mengambil nilai ekstra dalam bentuk bundel dengannya |
4 |
startActivityFromFragment(Fragment fragment, Intent intent, int requestCode) Ini meluncurkan aktivitas dari fragmen Anda saat ini di dalamnya |
5 |
startActivityFromFragment(Fragment fragment, Intent intent, int requestCode, Bundle options) Ini tidak hanya meluncurkan aktivitas dari fragmen, tetapi juga dapat mengambil nilai ekstra dengannya |
Apa pun fungsi yang Anda gunakan untuk meluncurkan aktivitas, semuanya mengembalikan hasilnya. Hasilnya bisa diperoleh dengan mengganti fungsi onActivityResult .
Contoh
Berikut adalah contoh yang menunjukkan bagaimana cara meluncurkan aplikasi kamera yang ada untuk menangkap gambar dan menampilkan hasilnya dalam bentuk bitmap.
Untuk bereksperimen dengan contoh ini, Anda perlu menjalankan ini pada perangkat sebenarnya yang didukung kamera.
Langkah | Deskripsi |
---|---|
1 | Anda akan menggunakan IDE studio Android untuk membuat aplikasi Android dan menamakannya Kamera di bawah aplikasi com.example.sairamkrishna.my. |
2 | Ubah file src / MainActivity.java untuk menambahkan kode maksud untuk meluncurkan Kamera. |
3 | Ubah layout file XML res / layout / activity_main.xml |
4 | Tambahkan izin Kamera dan jalankan aplikasi dan pilih perangkat android yang sedang berjalan dan instal aplikasi di atasnya dan verifikasi hasilnya. |
Berikut adalah konten file aktivitas utama yang dimodifikasi src/MainActivity.java.
package com.example.sairamkrishna.myapplication;
import android.Manifest;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.pm.PackageManager;
import android.net.Uri;
import android.os.Bundle;
import android.provider.Settings;
import android.support.v4.app.ActivityCompat;
import android.support.v4.content.ContextCompat;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
public class MainActivity extends AppCompatActivity {
public static final int MY_PERMISSIONS_REQUEST_CAMERA = 100;
public static final String ALLOW_KEY = "ALLOWED";
public static final String CAMERA_PREF = "camera_pref";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
if (ContextCompat.checkSelfPermission(this, Manifest.permission.CAMERA) != PackageManager.PERMISSION_GRANTED) {
if (getFromPref(this, ALLOW_KEY)) {
showSettingsAlert();
} else if (ContextCompat.checkSelfPermission(this,
Manifest.permission.CAMERA)
!= PackageManager.PERMISSION_GRANTED) {
// Should we show an explanation?
if (ActivityCompat.shouldShowRequestPermissionRationale(this,
Manifest.permission.CAMERA)) {
showAlert();
} else {
// No explanation needed, we can request the permission.
ActivityCompat.requestPermissions(this,
new String[]{Manifest.permission.CAMERA},
MY_PERMISSIONS_REQUEST_CAMERA);
}
}
} else {
openCamera();
}
}
public static void saveToPreferences(Context context, String key, Boolean allowed) {
SharedPreferences myPrefs = context.getSharedPreferences(CAMERA_PREF,
Context.MODE_PRIVATE);
SharedPreferences.Editor prefsEditor = myPrefs.edit();
prefsEditor.putBoolean(key, allowed);
prefsEditor.commit();
}
public static Boolean getFromPref(Context context, String key) {
SharedPreferences myPrefs = context.getSharedPreferences(CAMERA_PREF,
Context.MODE_PRIVATE);
return (myPrefs.getBoolean(key, false));
}
private void showAlert() {
AlertDialog alertDialog = new AlertDialog.Builder(MainActivity.this).create();
alertDialog.setTitle("Alert");
alertDialog.setMessage("App needs to access the Camera.");
alertDialog.setButton(AlertDialog.BUTTON_NEGATIVE, "DONT ALLOW",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
finish();
}
});
alertDialog.setButton(AlertDialog.BUTTON_POSITIVE, "ALLOW",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
ActivityCompat.requestPermissions(MainActivity.this,
new String[]{Manifest.permission.CAMERA},
MY_PERMISSIONS_REQUEST_CAMERA);
}
});
alertDialog.show();
}
private void showSettingsAlert() {
AlertDialog alertDialog = new AlertDialog.Builder(MainActivity.this).create();
alertDialog.setTitle("Alert");
alertDialog.setMessage("App needs to access the Camera.");
alertDialog.setButton(AlertDialog.BUTTON_NEGATIVE, "DONT ALLOW",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
//finish();
}
});
alertDialog.setButton(AlertDialog.BUTTON_POSITIVE, "SETTINGS",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
startInstalledAppDetailsActivity(MainActivity.this);
}
});
alertDialog.show();
}
@Override
public void onRequestPermissionsResult(int requestCode, String permissions[], int[] grantResults) {
switch (requestCode) {
case MY_PERMISSIONS_REQUEST_CAMERA: {
for (int i = 0, len = permissions.length; i < len; i++) {
String permission = permissions[i];
if (grantResults[i] == PackageManager.PERMISSION_DENIED) {
boolean
showRationale =
ActivityCompat.shouldShowRequestPermissionRationale(
this, permission);
if (showRationale) {
showAlert();
} else if (!showRationale) {
// user denied flagging NEVER ASK AGAIN
// you can either enable some fall back,
// disable features of your app
// or open another dialog explaining
// again the permission and directing to
// the app setting
saveToPreferences(MainActivity.this, ALLOW_KEY, true);
}
}
}
}
// other 'case' lines to check for other
// permissions this app might request
}
}
@Override
protected void onResume() {
super.onResume();
}
public static void startInstalledAppDetailsActivity(final Activity context) {
if (context == null) {
return;
}
final Intent i = new Intent();
i.setAction(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
i.addCategory(Intent.CATEGORY_DEFAULT);
i.setData(Uri.parse("package:" + context.getPackageName()));
i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
i.addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);
i.addFlags(Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS);
context.startActivity(i);
}
private void openCamera() {
Intent intent = new Intent("android.media.action.IMAGE_CAPTURE");
startActivity(intent);
}
}
Berikut akan menjadi konten res/layout/activity_main.xml file-
<?xml version="1.0" encoding="utf-8"?>
<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">
</RelativeLayout>
Berikut akan menjadi konten res/values/strings.xml untuk mendefinisikan satu konstanta baru
<resources>
<string name="app_name">My Application</string>
</resources>
Berikut ini adalah konten default dari AndroidManifest.xml -
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.sairamkrishna.myapplication" >
<uses-permission android:name="android.permission.CAMERA" />
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name="com.example.sairamkrishna.myapplication.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>
</application>
</manifest>
Mari coba jalankan aplikasi Anda. Saya berasumsi bahwa Anda telah menghubungkan perangkat Seluler Android Anda yang sebenarnya dengan komputer Anda. Untuk menjalankan aplikasi dari studio android, buka salah satu file aktivitas proyek Anda dan klik
Pilih perangkat seluler Anda sebagai opsi dan kemudian periksa perangkat seluler Anda yang akan membuka kamera dan menampilkan layar berikut -