gpt4 book ai didi

android - 在 Android 中保存来自相机的图片

转载 作者:太空狗 更新时间:2023-10-29 15:24:29 24 4
gpt4 key购买 nike

您必须忍受我,我是 Android 的新手,我的 Java 技能充其量只是“生疏”。

我很高兴能够毫不费力地让条形码扫描位工作,但事实证明,相机方面的事情确实没有那么容易。

我有一个主 Activity 类,它在启动时需要一个条形码;

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Button cameraButton = (Button) findViewById(R.id.cameraButton);
cameraButton.setOnClickListener( new OnClickListener(){
public void onClick(View v ){
IntentIntegrator.initiateScan(MakroDroidActivity.this, "Please scan order barcode", "Please scan a valid order barcode", "Yes", "No");
}
});
}

到目前为止,我正确地处理了 Intent ,如下所示:

protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
switch(requestCode) {
case IntentIntegrator.REQUEST_CODE: {
if (resultCode != RESULT_CANCELED) {
IntentResult scanResult = IntentIntegrator.parseActivityResult(requestCode, resultCode, data);
if (scanResult != null) {
String upc = scanResult.getContents();
if (upc.startsWith("ORD"))
{
//we have a valid order barcode
Camera cam = Camera.open();
cam.takePicture(shutterCallback, rawCallback, jpegCallback);
}
else
{
IntentIntegrator.initiateScan(MakroDroidActivity.this, "Please scan again", "Please scan a valid order barcode", "Yes", "No");
}
}
}
break;
}
}
}

我设置了回叫(目前其中没有代码),但在扫描条形码后,设备只显示黑屏。然后我需要在调试应用程序后重新启动设备,因为相机不再可用(我怀疑我没有清理我的引用所以相机被锁定到我的应用程序)

有人可以向我解释一下我是如何使用相机并将输出保存到 SD 卡的(我打算使用 SD 卡上的特定文件夹,例如:

filepath = filepath + UUID.randomUUID().toString() + ".jpg"; 

将一个新的、不冲突的文件名保存到文件夹中。

(设备是 T-Mobile pulse mini(我相信是华为制造的),我看到其他人说相机存在驱动程序问题,但我更倾向于认为这是我缺乏理解而不是硬件问题。)

提前感谢您对此提供的任何帮助。

最佳答案

试试这个:

public void takePhoto()
{
intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(getTempFile(this)) );
startActivityForResult(intent, 1);
}

private File getTempFile(Context context)
{
File path = new File(Environment.getExternalStorageDirectory(), context.getPackageName() );
if(!path.exists())
path.mkdir();
return new File(path, "debris.jpg");
}

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data)
{
if (resultCode == RESULT_OK)
{
switch(requestCode)
{
case 1:
final File file = getTempFile(this);
try
{
Media.getBitmap(getContentResolver(), Uri.fromFile(file) );
image_string = Uri.fromFile(file).toString();
}
catch (FileNotFoundException e)
{
Toast.makeText(getApplicationContext(), "file not found exception", Toast.LENGTH_SHORT).show();
}
catch (IOException e)
{
Toast.makeText(getApplicationContext(), "ioexception", Toast.LENGTH_SHORT).show();
}
break;
}
}
}
}

它可能比那更小更干净,但这可以满足您的所有要求

关于android - 在 Android 中保存来自相机的图片,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3193615/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com