PDA

View Full Version : استفاده از دوربین



abbasalim
جمعه 21 تیر 1392, 16:31 عصر
ب خ
سلام
من میخوام با اینتنت و android.media.action.image_capture یک عکس بگیرم و ازش استفاده کنم
کسی مثالی کدی راهنماییی چیزی داره؟:افسرده: میخوام در پوشه خاصی عکس گرفته شده ذخیره کنم

rubiks.kde
جمعه 21 تیر 1392, 16:36 عصر
ب خ
سلام
من میخوام با اینتنت و android.media.action.image_capture یک عکس بگیرم و ازش استفاده کنم
کسی مثالی کدی راهنماییی چیزی داره؟:افسرده: میخوام در پوشه خاصی عکس گرفته شده ذخیره کنم

اینم یه نمونه کدش

package de.vogella.android.imagepick;

import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;

import android.app.Activity;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Bundle;
import android.view.View;
import android.widget.ImageView;

public class ImagePickActivity extends Activity {
private static final int REQUEST_CODE = 1;
private Bitmap bitmap;
private ImageView imageView;

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
imageView = (ImageView) findViewById(R.id.result);
}

public void onClick(View View) {
Intent intent = new Intent();
intent.setType("image/*");
intent.setAction(Intent.ACTION_GET_CONTENT);
intent.addCategory(Intent.CATEGORY_OPENABLE);
startActivityForResult(intent, REQUEST_CODE);
}

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
InputStream stream = null;
if (requestCode == REQUEST_CODE && resultCode == Activity.RESULT_OK)
try {
// We need to recyle unused bitmaps
if (bitmap != null) {
bitmap.recycle();
}
stream = getContentResolver().openInputStream(data.getData( ));
bitmap = BitmapFactory.decodeStream(stream);

imageView.setImageBitmap(bitmap);
} catch (FileNotFoundException e) {
e.printStackTrace();
} finally ch (IOException e) {
e{
if (stream != null)
try {
stream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}

اینم فایل منیفست

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="de.vogella.cameara.api"
android:versionCode="1"
android:versionName="1.0" >

<uses-sdk android:minSdkVersion="15" />
<uses-permission android:name="android.permission.CAMERA"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name" >
<activity
android:name="de.vogella.camera.api.MakePhotoActivity"
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>


اینم لینک کامل مثال - مثال (http://www.vogella.com/articles/AndroidCamera/article.html)

abbasalim
جمعه 21 تیر 1392, 17:01 عصر
ممنون ولی من میخوام عکس رو ذخیره کنم

rubiks.kde
جمعه 21 تیر 1392, 18:54 عصر
ممنون ولی من میخوام عکس رو ذخیره کنم


این مثال هم دقیقا همین کار رو میکنه فقط به دامه مثال برید (لینکش رو هم گذاشتم) در نهایت عکس رو ذخیره میکنه.
توی کلاس PhotoHandler فایل رو هم دخیره میکنه

abbasalim
جمعه 21 تیر 1392, 19:33 عصر
ممنون حالا چطوری میتونم از sd بگیرم و نشونش بدم؟

rubiks.kde
جمعه 21 تیر 1392, 20:24 عصر
ممنون حالا چطوری میتونم از sd بگیرم و نشونش بدم؟


به این صورت
File fileInDirectory = new File( "/mnt/sdcard/mypic.png");
Bitmap bitmap = BitmapFactory.decodeFile(fileInDirectory.getAbsolu tePath());

abbasalim
جمعه 21 تیر 1392, 23:53 عصر
آقا کار نمیکنه مشکل من اینجاس : ( من کد رو میزارم ببینید می فهمید چرا ! ارور نمیده ولی هیچی هم نشون نمیده !





package com.example.camera;

import java.io.File;

import android.net.Uri;
import android.os.Bundle;
import android.os.Environment;
import android.provider.MediaStore;
import android.app.Activity;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.drawable.Drawable;
import android.util.Log;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ImageButton;
import android.widget.ImageView;
import android.widget.Toast;

public class MainActivity extends Activity {

private static final String LOG_TAG = "CameraActivity.java";
private static final int IMAGE_CAPTURE = 0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);


ImageView im = (ImageView) findViewById(R.id.imageView1);


// you can also create your own filename or path
String fileName = "Esfandune_ghish";

// where do you want to save the images
String path = Environment.getExternalStorageDirectory() + "/"
+ fileName + ".jpg";

File fileInDirectory = new File( Environment.getExternalStorageDirectory() + "/"
+ fileName + ".jpg");
Bitmap bitmap = BitmapFactory.decodeFile(fileInDirectory.getAbsolu tePath());
im.setImageBitmap(bitmap);


ImageButton takePhoto = (ImageButton) findViewById(R.id.takePhoto);
takePhoto.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
// Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
// startActivityForResult(takePictureIntent, 0 );



try {

// intent to start device camera
Intent intent = new Intent("android.media.action.IMAGE_CAPTURE");

// you can also create your own filename or path
String fileName = "Esfandune_ghish";

// where do you want to save the images
String path = Environment.getExternalStorageDirectory() + "/"
+ fileName + ".jpg";

File file = new File(path);
String x = "baba";
// if the file name already exists, append __x on the file name
path = Environment.getExternalStorageDirectory() + "/" +"esfandune"+ "/"+ fileName + "__" + x + ".jpg";
file = new File(path);



/* int x = 2;
while (file.exists()) {

path = Environment.getExternalStorageDirectory() + "/"
+ fileName + "__" + x + ".jpg";
file = new File(path);

x++;
}*/

Uri outputFileUri = Uri.fromFile(file);
intent.putExtra(MediaStore.EXTRA_OUTPUT, outputFileUri);

// 0, this code will be returned in onActivityResult() when the
// activity exits.
startActivityForResult(intent, 0);

} catch (NullPointerException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}









}
});

}

protected void onActivityResult(int requestCode, int resultCode, Intent data) {
try {
if (requestCode == IMAGE_CAPTURE) {
if (resultCode == RESULT_OK) {

Log.v(LOG_TAG, "Picture taken.");


} else {
// you can specify any message here
// or just remove it
Toast.makeText(getBaseContext(),
"Error: Result code is not RESULT_OK.",
Toast.LENGTH_SHORT).show();

}
} else {
// you can specify any message here
// or just remove it
Toast.makeText(getBaseContext(),
"Error: Request code is not IMAGE_CAPTURE.",
Toast.LENGTH_SHORT).show();
}

} catch (NullPointerException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
}

}





البته یکم کدش نا مرتبه که معذرت می خوام :)

abbasalim
جمعه 21 تیر 1392, 23:55 عصر
راسی عکس ذخیره میشه و داخل گالری قابل دیدن هست ولی داخل برنامه کار نمیکنه

rubiks.kde
شنبه 22 تیر 1392, 00:06 صبح
یعنی مشکل اینه که فایل ذخیره شده رو نمیتونید بخونید و نماشی بدید ؟

abbasalim
شنبه 22 تیر 1392, 00:24 صبح
یعنی مشکل اینه که فایل ذخیره شده رو نمیتونید بخونید و نماشی بدید ؟
اره دقیقا ، نمایش داده نمیشه :(

rubiks.kde
شنبه 22 تیر 1392, 00:51 صبح
من الان با این کد عکس از توی حافظه میخونم و نمایش میدم

final Bitmap b = BitmapFactory.decodeFile(Environment.getExternalSt orageDirectory().getAbsolutePath()+"/Capture.PNG");

final ImageView iv = (ImageView)findViewById(R.id.imageView1);
iv.setImageBitmap(b);
Log.d("ExampleImage", "decoded bitmap dimensions:" + b.getWidth() + "x" + b.getHeight());

abbasalim
شنبه 22 تیر 1392, 19:10 عصر
ممنون _ لطفا به این تاپیک دیگه پاسخ داده نشه مشکلم حل شد :قلب: