【问题标题】:Android save image in sdcard/signature, not in DCIM/cameraAndroid 将图像保存在 sdcard/signature 中,而不是 DCIM/camera
【发布时间】:2013-09-27 06:09:28
【问题描述】:

我有一个应用程序,您可以在上面签名。我无法保存图像。我希望该文件保存在 sdcard/signature 中,因为那是我在 strings.xml 中指定的文件夹并创建了该文件夹。而是将图像保存到 DCIM/camera 文件夹,而不是 sdcard/signature 文件夹中。

我已经阅读了有关从 DCIM 文件夹中删除图像的信息,所以这不是问题。但如果有人能告诉我为什么图像没有保存在 sd/signature 中,我真的很感激

在 onCreate 中会发生这种情况(外部目录只是一个名称,例如 StoreSignature 用于存储图像的文件夹):

 tempDir = Environment.getExternalStorageDirectory() + "/" + getResources().getString(R.string.external_dir) + "/";
    ContextWrapper cw = new ContextWrapper(getApplicationContext());
    File directory = cw.getDir(getResources().getString(R.string.external_dir), Context.MODE_PRIVATE);

这是保存方法:

mGetSign.setOnClickListener(new OnClickListener() 
    {        
        public void onClick(View v) 
        {
            Log.v("log_tag", "Panel Saved");
            boolean error = captureSignature();
            if(!error){
                mView.setDrawingCacheEnabled(true);
                mSignature.save(mView);
                Bundle b = new Bundle();

                String status = "done";
                File path = mypath;
                Log.i("info4", path.toString());
                String[] arr={status, path.toString()};
                b.putStringArray("status", arr);
                Log.i("info5", arr.toString());
                Intent intent = new Intent();
                intent.putExtras(b);
                setResult(RESULT_OK,intent);   
                finish();
            }
        }
    });

最后这是准备文件夹的地方(不知道这是否与is有关)

private boolean prepareDirectory() 
{
    try
    {
        if (makedirs()) 
        {
            return true;
        } else {
            return false;
        }
    } catch (Exception e) 
    {
        e.printStackTrace();
        Toast.makeText(this, "Kan het file systeem niet vinden.. Zit de SD-kaart er goed in?", 1000).show();
        return false;
    }
}

/**
 * Creates a directory
 * 
 * @return whether the directory is created or not
 */
private boolean makedirs() 
{
    File tempdir = new File(tempDir);
    if (!tempdir.exists())
        tempdir.mkdirs();

    if (tempdir.isDirectory()) 
    {
        File[] files = tempdir.listFiles();
        for (File file : files) 
        {
            if (!file.delete()) 
            {
                System.out.println("Deleten is mislukt " + file);
            }
        }
    }
    return (tempdir.isDirectory());
}

Strings.xml(签名值)

<string name="cancel">Annuleren</string>
<string name="clear">Opnieuw</string>
<string name="save">Opslaan</string>

<string name="naam">Naam</string>
<string name="external_dir">Handtekening</string>
<string name="input"></string>
<string name="title_activity_signature">Handtekening</string>

有没有人看到我做错了什么?

提前致谢!

【问题讨论】:

  • 你能显示你的字符串 XML 吗?
  • 当然,我现在正在添加它。只有签名部分会做吗?因为我的 strings.xml 有点大。
  • 使用下面的链接。它将解决您的问题 [Android 将文件保存到外部存储][1] [1]:stackoverflow.com/questions/7887078/…
  • 谢谢,它有效!只需将 jpeg 压缩更改为 PNG 压缩。我之前尝试过该解决方案并得到了黑色图像,但它现在可以工作了

标签: android camera signature


【解决方案1】:

试试下面的链接。首先,您应该检查天气外部存储是否可用。它会解决你的问题

Android saving file to external storage

检查此链接中的所有答案

【讨论】:

    【解决方案2】:

    试试这个代码:

    private void SaveIamge(Bitmap finalBitmap) {
    
            String root = Environment.getExternalStorageDirectory().toString();
            File myDir = new File(root + "/saved_images");    
            myDir.mkdirs();
            Random generator = new Random();
            int n = 10000;
            n = generator.nextInt(n);
            String fname = "Image-"+ n +".jpg";
            File file = new File (myDir, fname);
            if (file.exists ()) file.delete (); 
            try {
                   FileOutputStream out = new FileOutputStream(file);
                   finalBitmap.compress(Bitmap.CompressFormat.JPEG, 90, out);
                   out.flush();
                   out.close();
    
            } catch (Exception e) {
                   e.printStackTrace();
            }
    }
    

    也把权限放到manifest里面

    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-28
      • 1970-01-01
      相关资源
      最近更新 更多