カテゴリー
SugiBlog Webエンジニアのためのお役立ちTips

Toastに画像を表示する

本来、テキストを表示するToastですが、画像を表示することもできます。
画像の周りに白い余白をつけて、4分の1サイズで表示するサンプルです。

private void showImgToast(String filename) {
    int WC = ViewGroup.LayoutParams.WRAP_CONTENT;

    ImageView v = new ImageView(this);
    v.setImageURI(Uri.parse(filename));
    v.setLayoutParams(new LayoutParams(WC, WC));
    v.setBackgroundColor(Color.WHITE);
    v.setPadding(5, 5, 5, 5);

    BitmapFactory.Options bmOp = new BitmapFactory.Options();
    bmOp.inSampleSize = 4;
    v.setImageBitmap(
        BitmapFactory.decodeFile(
                filename,
                bmOp));

    Toast myToast = new Toast(this);
    myToast.setDuration(100);
    myToast.setGravity(Gravity.CENTER, 0, 0);
    myToast.setView(v);
    myToast.show();
}
2,796 views

コンテンツプロバイダ

メディア関係のURIのリストです。

MediaStore.Images.Media.INTERNAL_CONTENT_URI     //内部メディアの画像
MediaStore.Images.Media.EXTERNAL_CONTENT_URI     //外部メディアの画像

MediaStore.Video.Media.INTERNAL_CONTENT_URI      //内部メディアの動画
MediaStore.Video.Media.EXTERNAL_CONTENT_URI      //外部メディアの動画

MediaStore.Audio.Media.INTERNAL_CONTENT_URI      //内部メディアの音楽
MediaStore.Audio.Media.EXTERNAL_CONTENT_URI      //外部メディアの音楽
MediaStore.Audio.Albums.INTERNAL_CONTENT_URI     //内部メディアの音楽アルバム
MediaStore.Audio.Albums.EXTERNAL_CONTENT_URI     //外部メディアの音楽アルバム

MediaStore.Video.Thumbnails.INTERNAL_CONTENT_URI //内部メディアの動画のサムネイル
MediaStore.Video.Thumbnails.EXTERNAL_CONTENT_URI //外部メディアの動画のサムネイル
2,291 views

画像を添付してメールを送信する

SDカードの画像を添付してメーラーを起動します。
本体に保存されている画像は添付できないようです。
送信はできるが、添付されない。

private String PATH = Environment.getExternalStorageDirectory().toString();
private Uri IMAGE_URI = MediaStore.Images.Media.EXTERNAL_CONTENT_URI;

private void sendmail() {

    Intent intent = new Intent(Intent.ACTION_SEND);

    String[] strTo = { "sample@example.com" };

    intent.putExtra(Intent.EXTRA_EMAIL, strTo);
    intent.putExtra(Intent.EXTRA_SUBJECT, "件名");
    intent.putExtra(Intent.EXTRA_TEXT, "本文");

    Uri attachments = Uri.parse("file://" + PATH + "/sample.jpg");
    intent.putExtra(Intent.EXTRA_STREAM, attachments);
    intent.setType("image/jpeg");

    startActivity(Intent.createChooser(intent, "Choose Email Client"));
}

以下のパーミッション許可が必要
続きを読む…»

4,959 views

スクリーンショットの保存

Androidでは、画面のキャプチャはできないようですが、ImageViewのキャプチャならキャッシュを利用してできるようです。
ローカルにPNG形式で保存するサンプルです。

private boolean ScreenShot(ImageView imgView, String filename) {
    try {
        FileOutputStream out = openFileOutput(filename, MODE_PRIVATE);

        imgView.setDrawingCacheEnabled(false); //タイミングを確実にするために一旦falseに
        imgView.setDrawingCacheEnabled(true);

        Bitmap bmp = Bitmap.createBitmap(imgView.getDrawingCache());
        bmp.compress(CompressFormat.PNG, 100, out);

        out.close();

        return true;

    } catch (FileNotFoundException e) {
        e.printStackTrace();
        return false;
    } catch (IOException e) {
        e.printStackTrace();
        return false;
    }
}

SDカードに保存する場合
続きを読む…»

9,689 views

FilenameFilter

ファイル名に正規表現でフィルターをかけます

FilenameFilter fFilter = new FilenameFilter() {
    @Override
    public boolean accept(File dir, String filename) {
        return filename.matches(".+.jpg"); //正規表現で検索
    }
};

続きを読む…»

5,060 views