Я хочу захватить изображение с камеры android, но без знания пользователя.Как захватить изображение без знания пользователя с помощью поверхностного вида?
ответ
public class Capture extends Activity {
public Uri fileUri;
public String filepath1="";
public static final int DONE=1;
public static final int NEXT=2;
public static final int PERIOD=0;
private Camera camera;
private int cameraId;
private Timer timer;
public static final int MEDIA_TYPE_IMAGE = 2;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.autocapture);
try
{
cameraMethod();
}
catch(Exception e)
{
Log.e("camera","Not",e);
}
}
public void cameraMethod()
{
if (!getPackageManager().hasSystemFeature(PackageManager.FEATURE_CAMERA)) {
} else {
android.hardware.Camera.CameraInfo info =new android.hardware.Camera.CameraInfo();
cameraId = findFrontFacingCamera();
if (cameraId < 0) {
} else {
safeCameraOpen(cameraId);
}
}
fileUri = getOutputMediaFileUri(MEDIA_TYPE_IMAGE);
SurfaceView view = new SurfaceView(this);
try {
camera.setPreviewDisplay(view.getHolder());
} catch (IOException e) {
e.printStackTrace();
}
camera.startPreview();
Camera.Parameters params = camera.getParameters();
params.setJpegQuality(100);
camera.setParameters(params);
timer=new Timer(getApplicationContext(),threadHandler);
timer.execute();
}
////////////////////////////////////thread Handler///////////////////////////////////////
private Handler threadHandler = new Handler() {
public void handleMessage(android.os.Message msg) {
switch(msg.what){
case DONE:
// Trigger camera callback to take pic
camera.takePicture(null, null, photoCallback);
break;
case NEXT:
timer=new Timer(getApplicationContext(),threadHandler);
timer.execute();
break;
}
}
};
Camera.PictureCallback mCall = new Camera.PictureCallback() {
public void onPictureTaken(byte[] data, Camera camera) {
//decode the data obtained by the camera into a Bitmap
//display.setImageBitmap(photo);
Bitmap bitmapPicture = BitmapFactory.decodeByteArray(data, 0, data.length);
Message.obtain(threadHandler, Capture.NEXT, "").sendToTarget();
//Log.v("MyActivity","Length: "+data.length);
}
};
private int findFrontFacingCamera() {
int cameraId = 0;
// Search for the front facing camera
int numberOfCameras = Camera.getNumberOfCameras();
for (int i = 1; i < numberOfCameras; i++) {
CameraInfo info = new CameraInfo();
Camera.getCameraInfo(i, info);
if (info.facing == CameraInfo.CAMERA_FACING_FRONT) {
cameraId = i;
}
else
{
break;
}
}
return cameraId;
}
@Override
protected void onPause() {
if (timer!=null){
timer.cancel(true);
}
releaseCamera();
super.onPause();
}
private boolean safeCameraOpen(int id) {
boolean qOpened = false;
try {
releaseCamera();
camera = Camera.open(id);
qOpened = (camera != null);
} catch (Exception e) {
Log.e(getString(R.string.app_name), "failed to open Camera");
e.printStackTrace();
}
return qOpened;
}
private void releaseCamera() {
if (camera != null) {
camera.stopPreview();
camera.release();
camera = null;
}
}
Camera.PictureCallback photoCallback=new Camera.PictureCallback() {
public void onPictureTaken(byte[] data, Camera camera) {
OutputStream imageFileOS;
try {
imageFileOS = getContentResolver().openOutputStream(fileUri);
imageFileOS.write(data);
imageFileOS.flush();
imageFileOS.close();
Toast.makeText(Capture.this, "Image saved: " + fileUri, Toast.LENGTH_LONG).show();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
String sadf = fileUri.toString();
Log.e("File url for sd card", ""+sadf);
Intent myintent1=new Intent(Capture.this,MailSenderGmail1.class);
myintent1.putExtra("uris", sadf);
myintent1.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(myintent1);
finish();
}
};
private static Uri getOutputMediaFileUri(int type){
return Uri.fromFile(getOutputMediaFile(type));
}
/** Create a File for saving an image or video */
private static File getOutputMediaFile(int type){
// Check that the SDCard is mounted
File mediaStorageDir = new File(Environment.getExternalStoragePublicDirectory(
Environment.DIRECTORY_PICTURES), "TheftImageCapture");
// Create the storage directory(MyCameraVideo) if it does not exist
if (! mediaStorageDir.exists()){
if (! mediaStorageDir.mkdirs()){
Log.d("MyCameraVideo", "Failed to create directory Theft Image.");
return null;
}
}
java.util.Date date= new java.util.Date();
String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss")
.format(date.getTime());
File mediaFile;
if(type == MEDIA_TYPE_IMAGE) {
// For unique video file name appending current timeStamp with file name
mediaFile = new File(mediaStorageDir.getPath() + File.separator +
"IMG_"+ timeStamp + ".jpg");
} else {
return null;
}
return mediaFile;
}
}
TimerThread Class:
public class Timer extends AsyncTask<Void, Void, Void> {
Context mContext;
private Handler threadHandler;
public Timer(Context context,Handler threadHandler) {
super();
this.threadHandler=threadHandler;
mContext = context;
}
@Override
protected Void doInBackground(Void...params) {
try {
Thread.sleep(Capture.PERIOD);
} catch (InterruptedException e) {
e.printStackTrace();
}
Message.obtain(threadHandler, Capture.DONE, "").sendToTarget();
return null;
}
}
Интересно. Для какой версии вы компилируете? Как 'timer = новый таймер (getApplicationContext(), threadHandler);' здесь не компилируется, потому что эти параметры не ожидаются. Также timer.execute() не компилируется и timer.cancel (true); не хочет этого параметра. – greenapps
Извините, что я обновил класс timerthread. Теперь проверьте этот код. Работает. –
Спасибо. Я работал уже без таймера. Конечно, вы сбиваете с толку, что вы называете класс, выделенный из AsyncTask Timer, как все, - по крайней мере, я думаю, вы будете использовать java.util.Timer, так что это первое, что я переименовал. Но для остальных ваш код работает. – greenapps
- 1. Отправка электронной почты с помощью внешнего вида без знания пользователя
- 2. htaccess перенаправление без знания пользователя
- 3. Мерцание при использовании поверхностного вида
- 4. Как получить ширину и высоту поверхностного вида
- 5. захватить изображение с помощью CPP
- 6. Как захватить изображение с помощью AVFoundation framework?
- 7. php Как получить изображение с URL-адреса без знания расширения
- 8. Как быстро захватить изображение с помощью gstreamer
- 9. Несколько потоков, обновляющих холст поверхностного вида
- 10. Изображение центра внутри div с переполнением скрыто без знания ширины
- 11. Как захватить изображение с камеры в Android?
- 12. in android Как я могу получить скриншот или растровое изображение с пользовательского поверхностного вида
- 13. Как захватить данные пользователя
- 14. Как создать сеанс веб-сайта Domino без знания пароля пользователя?
- 15. Использование камеры внутри приложения с использованием поверхностного вида в android
- 16. Вращение вращения без знания пользователем
- 17. захватить изображение с помощью c sharp
- 18. сохранить изображения с помощью paperclip без вида
- 19. Как захватить изображение с веб-камерой html5 без подсказки безопасности
- 20. Как захватить изображение на Facebook?
- 21. Как захватить изображение с низким разрешением с помощью камеры андроида
- 22. Получение каталога файла без знания его расширения
- 23. Как захватить выбор пользователя с диалогом
- 24. Как захватить необработанное изображение с камеры андроида
- 25. Как изменить изображение пользователя с помощью cfldap?
- 26. Как обновить ребенка Firebase без «знания» родителей?
- 27. Изображение обрезка без знания x и y C#
- 28. Как захватить действие пользователя в браузере с помощью Java-кода?
- 29. opencv захватить изображение с веб-камеры без последующей обработки
- 30. Прочитать файл с помощью Python без знания кодировки
Что это ваш задают вопрос, и вы ответили на него в тот же самый момент? –
ya just i am sharing ... –