我想从内置的Android图库中检索调用ACTION_PICKIntent 的照片.我对Picasa的图片有疑问.我已将代码用于此链接,但它不起作用(File对象不存在).请问任何想法.
我只是想知道Android是否内置了代码,以便我可以在库视图中选择多个图像,然后将这些图像作为文件名导出到字符串数组中(例如/sdcard/~f1.jpg,/sdcard/~f2. JPG格式,...).
再次感谢任何帮助!只是为了让你们知道,我正在使用的画廊工作正常(对于一个图像) - 因为它正确导出文件名.只需要知道是否有一种简单的方法来选择倍数并导出它们.再次感谢!
我正在开发一个允许用户从Gallery小部件订购商品的应用程序.用户必须能够从"图库"窗口小部件中选择订单.订单应在图库中显示为图像,用户必须能够拖动图像并将其放置在订单按钮上.
我被拖放部分困住了.如何使用Android中的Gallery小部件拖放图像?
我需要实现一个一次滚动一个项目的画廊,它可以进行'自动滚动':即每隔几秒,它会自动滚动到下一个项目.
根据这个主题:Android:以编程方式在Gallery小部件中的图像之间设置动画,我扩展了Gallery,覆盖onFling以忽略fling事件,而是向左或向右模拟DPAD箭头,以便一次移动单个项目:
@Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {
int kEvent;
if(isScrollingLeft(e1, e2)){ //Check if scrolling left
kEvent = KeyEvent.KEYCODE_DPAD_LEFT;
}
else{ //Otherwise scrolling right
kEvent = KeyEvent.KEYCODE_DPAD_RIGHT;
}
onKeyDown(kEvent, null);
return true;
}
Run Code Online (Sandbox Code Playgroud)
这很好用.对于自动滚动,我创建一个处理程序并postDelayed runnable以相同的方式模拟相同的DPAD键按下:
handler.postDelayed(new Runnable() {
public void run() {
onKeyDown(KeyEvent.KEYCODE_DPAD_RIGHT, null);
}
}, AUTO_SCROLL_INTERVAL);
Run Code Online (Sandbox Code Playgroud)
但这没有做任何事!!
我知道runnable以正确的间隔按预期执行,因为我记录并确认了这一点,但是onKeyDown不会导致库滚动或切换项目.为什么这种方法适用于一种方法而不是另一种方法 我试着打电话给我的onFling,但无济于事.也尝试了dispatchKeyEvent,但没有运气.
我真的需要这样做,但我也真的想要理解为什么相同的代码不能在两个不同的地方产生相同的结果......这是否与Android视图处理输入事件的方式有关?我查看了图库代码的线索,但一无所获!好像它应该有效.
拜托,我很难过......任何想法?
谢谢
我在hashset中有图像链接.从那以后,我下载了图片.在我从该URL创建位图后,我扫描文件将其放入库中,以便我可以在库中看到它.我使用以下代码.
MediaScannerConnection.scanFile(obContext, new String[] { f.getAbsolutePath() }, null, null);
Run Code Online (Sandbox Code Playgroud)
要仅查看我的自定义库中的特定图像,我使用以下代码
Cursor imagecursor=managedQuery( MediaStore.Images.Media.EXTERNAL_CONTENT_URI,
columns,
MediaStore.Images.Media.DATA + " like ? ",
new String[] {"%myDesiredDirectory%"},
null);
Run Code Online (Sandbox Code Playgroud)
所以它是在向我展示画廊之前扫描myDesiredDirectory.扫描后,画廊有我的图像.
但现在我有两个问题:
扫描时,它会为新下载的图像创建缩略图.这些缩略图在图库中也可见.因此相同的图片可见两次.这是不希望的.
在我的应用程序运行的下一次迭代中,我想只显示新的图像集.为了实现这一点,我决定删除从第一次迭代下载的图像.
我使用以下代码删除该目录中的所有文件
if(dirChk==true){
File dir = new File(Path);
String[] children = dir.list();
String[] pathsOfDeletedThumbs=new String[children.length];
Log.d(LOGGER, "dir contains "+children.length);
for (int i = 0; i < children.length; i++) {
String temp = Path+children[i];
Log.d(LOGGER, "temp is "+temp);
new File(dir, children[i]).delete();
}
Run Code Online (Sandbox Code Playgroud)
但是那些自动创建的缩略图仍然存在于图库中.
任何人都可以帮我避免创建缩略图,如果不可避免,我们删除原始文件时也可以删除缩略图吗?
提前致谢...
我正在尝试开发Android 3.1平板电脑应用程序.
这个应用程序将有很多图像,我已经按照UI线程教程中的处理位图,但我做错了,因为我得到:
java.lang.ClassCastException:android.widget.AbsListView $ LayoutParams无法强制转换为android.widget.Gallery $ LayoutParams
这是我的代码:
我在一个Activity上设置了Gallery
mFactGallery = (Gallery)mView.findViewById(R.id.factGallery);
mFactGallery.setAdapter(new ImageGalleryAdapter(mActivity, ImageView.ScaleType.FIT_END, 180, 90));
Run Code Online (Sandbox Code Playgroud)
ImageGalleryAdapter.java
public class ImageGalleryAdapter extends BaseAdapter
{
private ArrayList<String> mImagesPath;
private Context mContext;
private int mWidth;
private int mHeight;
public ArrayList<String> getmImagesPath()
{
return mImagesPath;
}
public void setmImagesPath(ArrayList<String> mImagesPath)
{
this.mImagesPath = mImagesPath;
}
public void addImage(String imagePath)
{
mImagesPath.add(imagePath);
}
public ImageGalleryAdapter(Context context, ImageView.ScaleType scaleType, int width, int height)
{
mContext = context;
mWidth = …Run Code Online (Sandbox Code Playgroud) 我注意到MediaStore.Images.ImageColumns的一个奇怪的列叫做" MINI_THUMB_MAGIC ".
文档说的只是:
迷你拇指id.
类型:INTEGER
常数值:"mini_thumb_magic"
我的猜测是这个字段与MediaStore.Images.Thumbnails有关.
这是对的吗 ?如果没有,这是什么以及如何使用它?
如果它是正确的,我还有其他相关的问题:
它是原始图像的迷你尺寸图像吗?它使用相同的宽高比还是对它进行中心裁剪?
为什么"MICRO"的大小是方形(96 x 96),"MINI"的大小是非方形矩形(512 x 384)?
你如何使用它?我的猜测是,它是通过使用"做THUMB_DATA ",这是一个blob,所以你使用它像这样,但是那又有什么用"的宗旨getThumbnail "如果你已经有了这个领域?
如果方向值不为0,它会获得旋转的缩略图吗?意思是如果我想展示它,我不需要旋转图像?
是否可以与缩略图一起查询图像?也许使用内连接?
它适用于所有Android设备和版本吗?
为什么它甚至被称为"魔术"?是因为它也适用于视频(由于某种原因,音乐不存在,例如,它可能是专辑的封面照片)?
sql android mediastore android-contentresolver android-gallery
我正在从图库中选择图像,我想以编程方式确定图像的大小(kb或mb)。这是我写的:
public String calculateFileSize(Uri filepath)
{
//String filepathstr=filepath.toString();
File file = new File(filepath.getPath());
// Get length of file in bytes
long fileSizeInBytes = file.length();
// Convert the bytes to Kilobytes (1 KB = 1024 Bytes)
long fileSizeInKB = fileSizeInBytes / 1024;
// Convert the KB to MegaBytes (1 MB = 1024 KBytes)
long fileSizeInMB = fileSizeInKB / 1024;
String calString=Long.toString(fileSizeInMB);
return calString;
}
Run Code Online (Sandbox Code Playgroud)
从图库中选择图像的uri来的很完美。但是值fileSizeInBytes是零。从图库中onActivityResult选择图像后,我在调用此方法。之前我在这里看到了几个相同的问题。但是没有一个对我有用。有什么办法吗?
我是android开发新手,我正在做小应用程序来捕获USB Camrea图像UVCCamera.
我已经使用UVCCamera这样的SD卡捕获图像并存储在SD卡中
File filepath = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM), "IMG_"+getDateTime() + ".jpg");
mCameraClient.captureStill(filepath.toString());
Run Code Online (Sandbox Code Playgroud)
这里mCameraClient将使用UVC Camera进行处理并捕获图像并存储在该路径中,它将回调方法onCaptureDone
@Override
public void onCaptureDone(final String path) {
// TODO Auto-generated method stub
Log.e(TAG, "onCaptureDone called");
getActivity().runOnUiThread(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
//Toast -- Images Saved.
}
});
}
};
Run Code Online (Sandbox Code Playgroud)
然后我从图像按钮调用图库 onClickListener
private MediaScannerConnection conn;
File folder = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM));
File[] mImagefile = folder.listFiles(new FilenameFilter() {
public boolean accept(File dir, String filename) {
return filename.endsWith(".jpg");
} …Run Code Online (Sandbox Code Playgroud)