画像ギャラリーに問題があります。Dreddik の TouchImageGallery Libraryを使用しています。SDカードフォルダから画像を読み込もうとしています。インターネットの URL から画像を読み込もうとすると動作しますが、SD カードから画像パスを渡すと動作しません。
問題はファイル パスである可能性があると思いますが、これに関する情報は見つかりませんでした。私は「生ペースト」テクニックを使用していますが、それは間違っていると思います。
以下にコードを貼り付けます。
主な活動:
public class GaleriaMainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_galeria_main);
String []rutas = {"/storage/sdcard0/bola2.jpg",
"/storage/sdcard0/DCIM/Camera/1334835629645.jpg" };
Intent i = new Intent(this, CargadoDesdeSd.class);
i.putExtra("src", rutas);
startActivity(i);
}
}
そして、これはメインから画像のパスを取得するクラスです:
public class CargadoDesdeSd extends Activity {
private String[] imgPaths;
private GalleryViewPager mViewPager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_cargado_desde_sd);
imgPaths = getIntent().getExtras().getStringArray("src");
Log.d("debug", imgPaths[0]);
String []urls = getIntent().getExtras().getStringArray("src");
// String []urls = {
// "http://www.holafamilias.com/wp-content/uploads/2010/11/hola-11.jpg",
// "http://cs407831.userapi.com/v4078f31207/18fe/4Tz8av5Hlvo.jpg",
// "http://cs407831.userapi.com/v407831207/1906/oxoP6URjFtA.jpg",
// "http://cs407831.userapi.com/v407831207/190e/2Sz9A774hUc.jpg",
// "http://cs407831.userapi.com/v407831207/1916/Ua52RjnKqjk.jpg",
// "http://cs407831.userapi.com/v407831207/191e/QEQE83Ok0lQ.jpg"};
List<String> items = new ArrayList<String>();
Collections.addAll(items, urls);
UrlPagerAdapter pagerAdapter = new UrlPagerAdapter(this, items);
pagerAdapter.setOnItemChangeListener(new OnItemChangeListener()
{
@Override
public void onItemChange(int currentPosition)
{
Log.d("debug","Current item is " + currentPosition);
}
});
mViewPager = (GalleryViewPager)findViewById(R.id.viewer);
mViewPager.setOffscreenPageLimit(3);
mViewPager.setAdapter(pagerAdapter);
}
}
なぜこれが起こるのか知っている人はいますか?
どうもありがとう!!!:)
EDIT これはlogcatが言うことです:
05-30 12:02:37.085: W/System.err(24489): java.net.MalformedURLException: Protocol not found: /storage/sdcard0/DCIM/Camera/1338473970511.jpg
05-30 12:02:37.085: W/System.err(24489): at java.net.URL.<init>(URL.java:178)
05-30 12:02:37.085: W/System.err(24489): at java.net.URL.<init>(URL.java:127)
05-30 12:02:37.085: W/System.err(24489): at ru.truba.touchgallery.TouchView.UrlTouchImageView$ImageLoadTask.doInBackground(UrlTouchImageView.java:87)
05-30 12:02:37.090: W/System.err(24489): at ru.truba.touchgallery.TouchView.UrlTouchImageView$ImageLoadTask.doInBackground(UrlTouchImageView.java:1)
05-30 12:02:37.100: W/System.err(24489): at android.os.AsyncTask$2.call(AsyncTask.java:287)
05-30 12:02:37.100: W/System.err(24489): at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
05-30 12:02:37.100: W/System.err(24489): at java.util.concurrent.FutureTask.run(FutureTask.java:137)
05-30 12:02:37.100: W/System.err(24489): at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230)
05-30 12:02:37.100: W/System.err(24489): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076)
05-30 12:02:37.100: W/System.err(24489): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
05-30 12:02:37.100: W/System.err(24489): at java.lang.Thread.run(Thread.java:856)
05-30 12:02:37.100: D/STATUSBAR-NotificationService(2119): enqueueToast()
05-30 12:02:37.105: W/System.err(24489): java.net.MalformedURLException: Protocol not found: /storage/sdcard0/DCIM/Camera/1334835629645.jpg
05-30 12:02:37.105: W/System.err(24489): at java.net.URL.<init>(URL.java:178)
05-30 12:02:37.105: W/System.err(24489): at java.net.URL.<init>(URL.java:127)
05-30 12:02:37.105: W/System.err(24489): at ru.truba.touchgallery.TouchView.UrlTouchImageView$ImageLoadTask.doInBackground(UrlTouchImageView.java:87)
05-30 12:02:37.105: W/System.err(24489): at ru.truba.touchgallery.TouchView.UrlTouchImageView$ImageLoadTask.doInBackground(UrlTouchImageView.java:1)
05-30 12:02:37.105: W/System.err(24489): at android.os.AsyncTask$2.call(AsyncTask.java:287)
05-30 12:02:37.105: W/System.err(24489): at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
05-30 12:02:37.105: W/System.err(24489): at java.util.concurrent.FutureTask.run(FutureTask.java:137)
05-30 12:02:37.105: W/System.err(24489): at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230)
05-30 12:02:37.105: W/System.err(24489): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076)
05-30 12:02:37.105: W/System.err(24489): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
05-30 12:02:37.105: W/System.err(24489): at java.lang.Thread.run(Thread.java:856)
05-30 12:02:37.105: W/System.err(24489): java.net.MalformedURLException: Protocol not found: /storage/sdcard0/DCIM/Camera/bola2.jpg
05-30 12:02:37.105: W/System.err(24489): at java.net.URL.<init>(URL.java:178)
05-30 12:02:37.105: W/System.err(24489): at java.net.URL.<init>(URL.java:127)
05-30 12:02:37.105: W/System.err(24489): at ru.truba.touchgallery.TouchView.UrlTouchImageView$ImageLoadTask.doInBackground(UrlTouchImageView.java:87)
05-30 12:02:37.105: W/System.err(24489): at ru.truba.touchgallery.TouchView.UrlTouchImageView$ImageLoadTask.doInBackground(UrlTouchImageView.java:1)
05-30 12:02:37.105: W/System.err(24489): at android.os.AsyncTask$2.call(AsyncTask.java:287)
05-30 12:02:37.105: W/System.err(24489): at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
05-30 12:02:37.105: W/System.err(24489): at java.util.concurrent.FutureTask.run(FutureTask.java:137)
05-30 12:02:37.105: W/System.err(24489): at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230)
05-30 12:02:37.105: W/System.err(24489): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076)
05-30 12:02:37.105: W/System.err(24489): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
05-30 12:02:37.105: W/System.err(24489): at java.lang.Thread.run(Thread.java:856)
編集: URLイメージローダークラスからSDカードイメージをロードしようとしていたことに気付きました。私はそれを再方向付けしました、そして今、これは以下の私の主な活動コードショーです:
/*
*Fields
*/
final String TAG= "debug";
private GalleryViewPager mViewPager;
private String[] imgPaths;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
imgPaths = getIntent().getExtras().getStringArray("src");
Log.d(TAG, imgPaths[0]);
List<String> items = new ArrayList<String>();
int readLimit = 16 * 1024;
try {
for (String filename : imgPaths)
{
if (filename.matches(".+\\.jpg"))
{
InputStream is = null;
try {
is = new BufferedInputStream(new FileInputStream(new File(filename, "")), readLimit);
is.mark(readLimit);
} catch (FileNotFoundException e)
{
e.printStackTrace();
}
copy(is, new File(filename) );
items.add(filename);
}
}
} catch (IOException e)
{
e.printStackTrace();
}
FilePagerAdapter pagerAdapter = new FilePagerAdapter(this, items);
pagerAdapter.setOnItemChangeListener(new OnItemChangeListener()
{
@Override
public void onItemChange(int currentPosition)
{
Log.d(TAG, "Current item is " + currentPosition);
}
});
mViewPager = (GalleryViewPager)findViewById(R.id.viewer);
mViewPager.setOffscreenPageLimit(3);
mViewPager.setAdapter(pagerAdapter);
public void copy(InputStream in, File dst) throws IOException
{
OutputStream out = new FileOutputStream(dst);
// Transfer bytes from in to out
byte[] buf = new byte[1024];
int len;
while ((len = in.read(buf)) > 0) {
out.write(buf, 0, len);
}
in.close();
out.close();
}
}
実行時エラーはありませんが、デフォルトのエラー画像が表示され、必要な画像が表示されません:\