一回PCへマウントして、アンマウントしたり、OS自体を再起動したりすれば見れるんですけども。 なんでしょうか。これは。
でも、touch2pixelとかはちゃんと保存した後もすぐ見れるんですよね。これがまた。
なにか特別な保存方法があるんだろうかー。
って、調べてみたら。
ContentResolverってので登録しなきゃいけないんですね。 サムネイル絡みかと思ってたら、こんなのがあるとは・・・。
一応コード
- // 保存先を取得
- String status = Environment.getExternalStorageState();
- File fout = null;
- if (!status.equals(Environment.MEDIA_MOUNTED)) {
- // SDカードがマウントされてないので、システムの使える場所に保存
- fout = getContext().getFilesDir();
- } else {
- // SDカードがマウントされているので、勝手にフォルダ作成
- fout = new File("/sdcard/ciasom/");
- fout.mkdirs();
- }
- File fname = new File(fout ,"/ciasom" + getDate() + ".png");
- FileOutputStream fos = new FileOutputStream(fname);
- bitmap.compress(CompressFormat.PNG, 100, fos);
- fos.flush();
- fos.close();
- //メディアに登録作業が必要らしい。
- ContentValues values = new ContentValues();
- ContentResolver contentResolver = getContext().getContentResolver();
- values.put(Images.Media.MIME_TYPE, "image/png");
- values.put(Images.Media.DATE_MODIFIED,System.currentTimeMillis()/1000);
- values.put(Images.Media.SIZE, fname.length());
- values.put(Images.Media.TITLE, fname.getName());
- values.put(Images.Media.DATA, fname.getPath());
- contentResolver.insert(Media.EXTERNAL_CONTENT_URI, values);
これまたはまったのが、Images.Media.DATE_MODIFIED には更新時間を入れるんだけど、ちょっとぐぐると
「System.currentTimeMillis()」が平気で指定されてるところ。
でも、これで保存すると、2037年とかになっちゃうんですよな。
ここで指定するのは1970年1月1日からの~ってとこまでは一緒なんだけど、「秒数」を入れるらしい。
んで、System.currentTimeMillis()は1970年起点の「ミリ秒」なので、時間が狂う。と。
ちゅーわけで、/1000が要るわけです。 ふむん。
完成が近づいてきたぜー
0 件のコメント:
コメントを投稿