0
我想获取特定文件夹中存在的文件列表。但listfiles
在第一次从相机捕捉图像时返回大小0。但是如果我从相机拍摄下一张照片,尺寸显示为1
。我检查了特定的文件夹,图像存在。如果我回到以前的活动并返回到相机活动,它显示正确的大小。这里是我的代码:ListFiles第一次没有正确获取文件夹文件
CameraTestActivity.java:
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
bitmapImageView = new ArrayList<ImageToLoad>();
((FrameLayout) findViewById(R.id.mPreview)).addView(mPreview);
ExternalStorageDirectoryPath = Environment
.getExternalStorageDirectory().getAbsolutePath();
targetPath = ExternalStorageDirectoryPath + "/images/";
targetDirector = new File(targetPath);
scroller = (HorizontalImageScroller) findViewById(R.id.scroller_images);
adapter = new HorizontalImageScrollerAdapter(CameraTestActivity.this, bitmapImageView);
adapter.setImageSize((int) getResources().getDimension(R.dimen.image_size));
scroller.setAdapter(adapter);
this.scroller.setOnItemClickListener(this);
_horizontalImageScrollers = new ArrayList<HorizontalImageScroller>();
_horizontalImageScrollers.add(scroller);
((ImageButton)findViewById(R.id.cancel_camera)).setOnClickListener(onButtonClick);
((ImageButton)findViewById(R.id.hide)).setOnClickListener(onButtonClick);
LoadImagefromSD();
mTakePicture = (ImageButton) findViewById(R.id.takepicture);
mTakePicture.setOnClickListener(mTakePictureAction);
}
onClickEvent相机:
/// Handles when mTakePicture is clicked
private OnClickListener mTakePictureAction = new OnClickListener()
{
@Override
public void onClick(View v)
{
if (mCamera != null)
{
new LongOperation().execute("");
}
}
};
的AsyncTask:
private class LongOperation extends AsyncTask<String, Void, String> {
@Override
protected String doInBackground(String... params)
{
mCamera.takePicture();
return "Executed";
}
@Override
protected void onPostExecute(String result)
{
pDialog.dismiss();
LoadImagefromSD();
}
@Override
protected void onPreExecute()
{
pDialog = new ProgressDialog(CameraTestActivity.this);
pDialog.setMessage("Loading...");
pDialog.setIndeterminate(false);
pDialog.setCancelable(true);
pDialog.show();
}
@Override
protected void onProgressUpdate(Void... values)
{
}
}
LoadImagefromSdCard():
private void LoadImagefromSD()
{
if (targetDirector.exists())
{
bitmapImageView.clear();
File[] files = targetDirector.listFiles();
Toast.makeText(getApplicationContext(), String.valueOf("list files "+targetDirector.listFiles().length), Toast.LENGTH_LONG).show();
Toast.makeText(getApplicationContext(), String.valueOf("files length"+files.length), Toast.LENGTH_LONG).show();
for (File file : files)
{
BitmapFactory.Options options = new BitmapFactory.Options();
options.inSampleSize = 8;
Bitmap bmp = BitmapFactory.decodeFile(file.getAbsolutePath(), options);
Drawable d = new BitmapDrawable(getResources(), bmp);
ImageToLoad iLoad = new ToasterToLoadDrawableResource(d, file.getName());
bitmapImageView.add(iLoad);
}
Toast.makeText(getApplicationContext(), String.valueOf("list size"+bitmapImageView.size()), Toast.LENGTH_LONG).show();
if (bitmapImageView.isEmpty())
{
btnOK.setEnabled(false);
}
else
{
btnOK.setEnabled(true);
}
adapter.notifyDataSetChanged();
childCount = scroller.getChildCount();
scroller.setSelection(bitmapImageView.size()-1);
}
else
{
targetDirector.mkdirs();
}
}
谢谢您的理解与合作! –
@AndrewBarber:我很荣幸能够与版主合作。 –
@AndrewBarber:嘿安德鲁,你忘了做一件事,其实我把我的名字改成了'Jon Skeet'的整个SE档案。我认为你只是改变了我的名字,SE的其他网站仍然显示我的名字为Jon Skeet。我想让你注意。 –