私は私のアンドロイドapp.forこのためのカメラ機能を実装しようと思って、私はインターネット上で多くのことを検索しアンドロイドカメラ実装
を使用して、独自のカメラのクラスを設計カメラ機能を実装するための2方法を見つけました
android.view.SurfaceHolder and android.view.SurfaceView
しかし、このアプローチは、私は私のコード複合体を作る多くのものの世話をする必要があり、こののように私にはよく見るん。
私はデバイスカメラを呼び出す意図を使用できます。今、再びこの中で、私はMediaStore.EXTRA_OUTPUT
を使用いけない場合、私は私ではありませんサムネイルを取得MediaStore.EXTRA_OUTPUT
を使用してMediaStore.EXTRA_OUTPUT
を使用していない2オプション
i)を持っています実際の要件。私はこのサムネイルを拡大縮小すると、私は低品質の画像を見つけるので、これよりも大きな画像が必要です。
私はMediaStore.EXTRA_OUTPUT
を使用している場合、私は意図がnullで見つける
onActivityResult(int requestCode, int resultCode, Intent intent)
のようにサムスンのようないくつかのデバイス上の任意の画像を得るくぼみ。インターネットでたくさんの検索をしたところ、これはデバイス固有の問題であることがわかりました。私は私と三星銀河を持っています。私はこの問題に直面しています。
私のコードをデバイス固有のコードにしたくないです。どのように私のコードを一般的にするかを教えてくれる人もいます。あなたの分析のために、私は次のコード
@Override
public void onCreate(Bundle savedInstanceState) {
try {
super.onCreate(savedInstanceState);
File root = new File(Environment
.getExternalStorageDirectory()
+ File.separator + "myDir" + File.separator)
if(!root.exists()){
root.mkdirs();
}
sdImageMainDirectory = new File(root, "myPicName");
startCameraActivity();
}
catch (Exception e) {
finish();
Toast.makeText(this, "Error occured. Please try again later.",
Toast.LENGTH_SHORT).show();
}
}
Uri outputFileUri;
protected void startCameraActivity() {
outputFileUri = Uri.fromFile(sdImageMainDirectory);
Intent intent = new Intent("android.media.action.IMAGE_CAPTURE");
intent.putExtra(MediaStore.EXTRA_OUTPUT, outputFileUri);
startActivityForResult(intent, 0);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent intent) {
switch (resultCode) {
case 0:
finish();
break;
case -1:
try {
if(intent != null)
StoreImage(this, Uri.parse(intent.toURI()),
sdImageMainDirectory);
} catch (Exception e) {
e.printStackTrace();
}
Intent i = new Intent(this,Home.class);
i.putExtra("url", outputFileUri);
startActivity(i);
finish();
}
}
public static void StoreImage(Context mContext, Uri imageLoc, File imageDir) {
Bitmap bm = null;
try {
bm = Media.getBitmap(mContext.getContentResolver(), imageLoc);
FileOutputStream out = new FileOutputStream(imageDir);
bm.compress(Bitmap.CompressFormat.JPEG, 100, out);
bm.recycle();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
}