ラベル データフォルダ の投稿を表示しています。 すべての投稿を表示
ラベル データフォルダ の投稿を表示しています。 すべての投稿を表示

2015年8月31日月曜日

【アプリ開発】アプリのショートカットを作成

しばらくぶりの更新となってしまいましたが、
アプリのショートカットの作成方法について書いていきたいと思います。
更新が不定期ですいませんm(_ _)m


データフォルダアプリでもアプリのショートカットを作成する方法を用いて対応していますので、
今回その点について関数にまとめたりしたのでサンプルコードとして紹介しておきたいと思います。

❏パーミッション


必要なパーミッションは、アプリからショートカットを作成するためのパーミッションを追加します。
    <uses-permission android:name="com.android.launcher.permission.INSTALL_SHORTCUT"></uses-permission>

もしアプリからショートカットを削除する場合には、次のパーミッションも追加しておきます。
    <uses-permission android:name="com.android.launcher.permission.UNINSTALL_SHORTCUT"></uses-permission>


❏サンプルコード

このコードは、ギャラリーからintentで画像を取得して、取得した画像でショートカット作成を行うサンプルコードになります。
 @Override
 protected void onActivityResult(int requestCode, int resultCode, Intent data)
 {
  if(requestCode == REQUEST_GALLERY && resultCode == RESULT_OK)
  {
   try {
    InputStream in = getContentResolver().openInputStream(data.getData());
    Bitmap img = BitmapFactory.decodeStream(in);
    in.close();
    // 選択した画像をアイコン(ショートカット)として追加
    shortcutAdd(getString(R.string.app_name), img);
   } catch (Exception e) {
    e.printStackTrace();
   }
  }

 }

 /*********************************************************************
  * アイコン(ショートカット)の作成
  *********************************************************************/
 private void shortcutAdd(String name, Bitmap bmp)
 {
  // Delete Shortcut
  shortcutDel(name);

  // Intent to be send, when shortcut is pressed by user ("launched")
  Intent shortcutIntent = new Intent(Intent.ACTION_MAIN);
  shortcutIntent.setClassName(this, MainActivity.class.getName());

  Bitmap scaledBitmap = Bitmap.createScaledBitmap(bmp, 128, 128, true);

  // Decorate the shortcut
  Intent addIntent = new Intent();
  addIntent.putExtra(Intent.EXTRA_SHORTCUT_INTENT, shortcutIntent);
  addIntent.putExtra(Intent.EXTRA_SHORTCUT_NAME, name);
  addIntent.putExtra(Intent.EXTRA_SHORTCUT_ICON, scaledBitmap);
  //addIntent.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE, icon);

  // Inform launcher to create shortcut
  addIntent.setAction("com.android.launcher.action.INSTALL_SHORTCUT");
  sendBroadcast(addIntent);
 }

 /*********************************************************************
  * アイコン(ショートカット)の削除
  *********************************************************************/
 private void shortcutDel(String name)
 {
  // Intent to be send, when shortcut is pressed by user ("launched")
  Intent shortcutIntent = new Intent(Intent.ACTION_MAIN);
  shortcutIntent.setClassName(this, MainActivity.class.getName());

  // Decorate the shortcut
  Intent delIntent = new Intent();
  delIntent.putExtra(Intent.EXTRA_SHORTCUT_INTENT, shortcutIntent);
  delIntent.putExtra(Intent.EXTRA_SHORTCUT_NAME, name);

  // Inform launcher to remove shortcut
  delIntent.setAction("com.android.launcher.action.UNINSTALL_SHORTCUT");
  sendBroadcast(delIntent);
 }

ショートカットの作成には"com.android.launcher.action.INSTALL_SHORTCUT"のIntentを
ブロードキャスト送信することで行います。
ブロードキャスト送信に渡すIntentには各情報をputExtraで渡して設定します。
Intent.EXTRA_SHORTCUT_INTENTには、作成するショートカットアイコンのclassを設定したIntentを渡します。
Intent.EXTRA_SHORTCUT_NAMEには、作成するショートカットの名前のStringを渡します。
Intent.EXTRA_SHORTCUT_ICONには、作成するショートカットアイコンのBitmapを渡します。
Intent.EXTRA_SHORTCUT_ICON_RESOURCEを使用すれば、リソース(Parcelable)を渡すことでも
作成するショートカットアイコンの設定が可能です。

Intent.EXTRA_SHORTCUT_ICONでBitmapを渡す際は、サイズが大きすぎると設定されないため、アイコンサイズを128x128位に設定しています。

ショートカットの削除する場合には"com.android.launcher.action.UNINSTALL_SHORTCUT"のIntentをブロードキャスト送信することで行います。

❏その他

今回のサンプルコードはショートカットのアイコンをギャラリーから選択して好きなアイコンに設定して作成できるものを
想定しています。

アプリのアイコンについて動的に変更させたいと思っていたのですが、
アプリのアイコンの指定はAndroidManifest.xmlで行われているため、アプリが動作している最中に
直接編集することはできないため、動的な変更は無理であることがわかりましたΣ(゚Д゚)
その代替案として、ショートカットを作成することで対応できる場合もあるかなと思います。

2014年5月28日水曜日

【アプリ開発】アイコンに多言語のテキスト追加

アイコン等の画像を用意するとき、テキスト付きのアイコンを用意する場合があると思います。

以前にも【アプリ開発】画像への描画について書きましたが、今回はボタン用のアイコンに
多言語のテキストを描画してわざわざ多言語用のアイコンを用意せずにアプリで利用しようという
方法になります(^^)

自分もよくテキスト付きのアイコンを使っていたのですが、
日本語以外の言語に対応する場合、他の言語用のアイコンを用意する必要が出てしまい、
とても面倒でした(´・ω・`)

なので、テキストなしのアイコンのみ用意して、
プログラム内で画像にテキストを描画したものをBitmapとして使う方法がとても便利でしたので、
紹介していきます♪




用意するアイコン

最近データフォルダで追加したアイコンになりますが、
データフォルダで複数選択時、画面下に表示するテキスト無しのアイコンになります。


データフォルダでの複数選択時

 


アイコンにテキストを描画してBitmapとして使用しています。
最初に用意したテキスト無しのアイコンだけで他言語用のアイコンを作成できるため、
個別に各言語用のアイコンを用意する必要がありません。




描画処理

以下の関数に読み込んだアイコンのBitmapと書き込みたいテキストを渡して、
テキストの色とサイズを指定すれば、画像の下部にテキストを追加できます。

2014年4月4日金曜日

【アプリ開発】アニメーションGIF画像の再生

最近データフォルダでアニメーションGIF画像の再生に対応してアップデートしました(^O^)
Googleでも画像検索で最近Gif画像の再生に対応しましたね(^^)

データフォルダでは、以前からアニメーションGIF画像の再生には対応していましたが、
ViewPagerタイプの画像表示画面では対応していなかったため、
ImageViewを拡張したGifImageViewを作成し派生させて利用しました。


アニメーションGif画像を表示する方法は2通りあるため、
ここではその2つのGifImageViewを紹介したいと思います。

Movieクラスを使用したアニメーションGIF画像の再生
GifDecoderを使用したアニメーションGIF画像の再生



Movieクラスを使用したアニメーションGIF画像の再生

public class GifImageView extends ImageView 
{
    private Movie mMovie;

    private long mMoviestart;

    public GifImageView(Context context, InputStream stream) {
        super(context);
        
        mMovie = Movie.decodeStream(stream);        
    }

    @Override
    protected void onDraw(Canvas canvas) {
        canvas.drawColor(Color.TRANSPARENT);
        super.onDraw(canvas);
        final long now = SystemClock.uptimeMillis();

        if (mMoviestart == 0) { 
            mMoviestart = now;
        }

        final int relTime = (int)((now - mMoviestart) % mMovie.duration());
        mMovie.setTime(relTime);
        mMovie.draw(canvas, 10, 10);
        this.invalidate();
    }
}

まず、ImageViewを拡張したGifImageView内に
アニメーションGIF画像再生用のMovieクラスのメンバ変数を持たせ、
GIF画像をInputStreamとして渡してMovieクラスにdecodeStreamで読み込ませて再生させます。

割りと簡単に実装ができ、Movieクラスの動作はNativeであるため、軽快に動作しますが、全てのGIF画像には対応していないため、その場合にはGifDecoderを使用して動作させると良いかと
思います。


2013年11月14日木曜日

【アプリ開発】ActionBarSherlockからActionBarActivityへの切替作業まとめ

データフォルダでは「ActionBarSherlock」を使用してアクションバーを実装していましたが、
サポートライブラリ v7 でアクションバーが実装されたため、全面的に切り替えを行いました。

ちょっと調べてみると簡単に切り替えられます、とあったのですが、
細かいところで意外に苦戦しました(^^;

その時に覚書として作業をメモっておきます。
後々まとめます。

事前準備

サポートライブラリに含まれる android-support-v7-appcompatプロジェクトをインポートし、
対象となるアプリの依存するライブラリとして、
プロジェクトの[プロパティー]→[Android]内のライブラリで設定してから、以下の作業を行いました。


変更作業

①継承するクラスの変更
 ・SherlockFragmentActivity → ActionBarActivity
 ・SherlockActivity       → ActionBarActivity


②テーマの変更
 ・setTheme(R.Style.Theme_Sherlock); → setTheme(R.Style.Theme_AppCompat);
 ・setTheme(R.Style.Theme_Sherlock_Translucent);  → setTheme(R.Style.Theme_AppCompat);
                                  (代わりになるのが見つからなかった…)

③メニューアイコン設定の変更
 ・subMenu.getItem().setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS);
     ↓
  MenuItemCompat.setShowAsAction(subMenu.getItem(), MenuItemCompat.SHOW_AS_ACTION_ALWAYS);


④アクションバー関係の変更
 import android.app.ActionBar; → import android.support.v7.app.ActionBar;
 Activity.getActionBar() → ActionBarActivity.getSupportActionBar()


⑤画像の変更※ActionBarSherlockのプロジェクトから画像を呼び出している箇所
abs__ic_menu_moreoverflow_normal_holo_light → abc_ic_menu_moreoverflow_normal_holo_light



その他

■ActionBarActivityで用意されているテーマ
 Theme.AppCompat
 Theme.AppCompat.Light
 Theme.AppCompat.Light.DarkActionBar


■問題点
・サブメニュー関係がダイアログで表示される
 → リストでの表示は難しい?
・サブメニューが開かなくなる場合がある
 →要調査



■他サイト資料
 →つ部 Android 勉強会 2013年9月 発表資料 (Slide Share)


2013年11月2日土曜日

【SD】スマートフォンのSDカード

スマートフォンで使用するSDカードについて情報をまとめていきます。


まず、スマートフォン(Android対応機種)では、
主に「microSD」と呼ばれる小型のSDカードが使用されます。

SDメモリーカードを一般的に「SDカード」と呼び、フラッシュメモリーに属するメモリーカードです。



簡単にSDメモリーカードの種類について紹介して、
スマートフォンで使う上でのSDカードの問題点と寿命について説明します。




SDカードの種類とスピードクラス

「容量」を示す名称として以下の3種類があります。

SDカードの種類と規格上の最大容量
一般表記最大容量
SD2GB
SDHC32GB
SDXC2TB(2000GB)
SDHCカードの規格策定と同時に、
データ転送速度の目安として「SDスピードクラス」が定められています。


※Class10は後で規格化されたため、ハードによっては上位互換がない。



SDカードの種類によって、対応のスピードクラスも決まっています。
カメラやビデオを取る場合は、Class4以上が推奨されています。

もし写真をとるとき、カメラの反応が遅いとおもった場合には、SDカードのクラスを10にしてみると、
動きが格段に良くなるかもしれません。

また、スピードクラスはClass10以上の新規格の「UHS Speed Class1(U1)」があり、
この規格に対応する機種が今後でてくるのではないかと思います。(もうでてたりする?)




SDカードの問題点と寿命

書き換え可能回数に上限があり、書き換えを一定数繰り返すと正常に保存できなくなったり、保存されているデータの破損する可能性が高まります。

またフラッシュメモリは精密な電子製品であり、電気的なストレスに弱く、水没など水に起因する故障も起こりえます。


2013年10月24日木曜日

【データフォルダ】広告枠の販売について

これまで何件か広告枠の掲載について要望がありましたので、
データフォルダアプリの広告の掲載が可能な広告枠についてお知らせいたします。


掲載可能な広告枠

データフォルダアプリ内の以下の箇所に広告の掲載が可能です。


 ①データフォルダ内各ページの画面下部
 ②ユーザフォルダ内各ページの画面下部
 ③デザイン選択画面下部(アイコン型のみ)
 ④SD情報ページの画面下部(アイコン型のみ)
 ⑤フォルダーショートカットのウィジェット設定画面の
   アイコン選択画面(アイコン型のみ)

①②





















広告枠概要

【広告種類】
 ・バナー型 :①と②で表示
 ・アイコン型:①~⑤で表示

【広告サイズ】
 ・バナー型 :480px×75px,320px×50px
 ・アイコン型:114px×114px

【販売期間】
 ・バナー型 :1日から可能、表示回数単位でも可
 ・アイコン型:1日から可能、表示回数単位でも可


2013年10月22日火曜日

【アプリ開発】画像への描画

前回、【アプリ開発】背景画像の描画で背景画像の描画について紹介しました。


今回はそれを応用して、
画像に描画を行って別の画像を表示する方法を紹介します。


紹介する方法は実際にデータフォルダに使用している処理で、
以下の2点を紹介していきます。

 ・動画ファイルの画像に再生ボタンの描画
 ・ファイル画像に拡張子の描画


動画ファイルの画像に再生ボタンの描画


データフォルダでは、動画ファイルの画像を一覧で表示しますが、
その際画像には再生ボタンを描画して表示しています。

2013年10月12日土曜日

【アプリ】データフォルダの紹介ビデオ

こんばんは。

以前からアンドロイダー様に公開デベロッパーとして登録していましたが、
アンドロイダー様にデータフォルダの紹介ビデオを作ってもらっていました(^0^)/

アプリの説明ビデオを作るのは難しいかなーと思っていたので、
無料で製作してくれたアンドロイダー様には感謝です♪


アプリのダウンロードページやヘルプページにあるデータフォルダの説明を読むより、
ビデオで見れた方がわかりやすくていいですよね~(*^0^*)

ぜひ一度見てみてください☆



紹介ビデオ

   

2013年10月7日月曜日

k0j1 Webサイトの紹介

前回のアプリの紹介に引き続き、
開発アプリのWebサイトについて紹介していきます。

k0j1の開発アプリ一覧のページを用意しました。
jQuery Mobileを使用したページで、各アプリのヘルプページにリンクしています。


Webサイト

k0j1-アプリ一覧


■データフォルダ-ヘルプページ











■スクリーンメモ-ヘルプページ











■ペイント~simple~-ヘルプページ













各アプリのページはアプリからオプションメニューのヘルプで
これらのページに飛ぶように設定していますので、
実際にアプリのヘルプページとして利用しています。


アプリでそれぞれプロモーション用の画像を作成していたのですが、
今のGooglePlayでは使われていないのが少し残念です(^^;

まぁそこまで出来が良いわけでもないのですが、
画像の作成は時間がかかるため、もうちょっと活躍させたかったなと思っていたので、
せめてブログででも使いたいなと思い紹介しました(^0^;


アプリではWEBと連携したものも作ってみたいとは思うので、
今後はそのような技術も取り入れていこうと思います(^^)


また、今回WEBで使用しているjQuery Mobileについても、
色々と便利な機能が揃っているので、使用中の機能や今後使用する情報について
書いていきたいと思います(^0^)/

2013年10月6日日曜日

k0j1 開発アプリの紹介

Androidでアプリを開発するにあたって色々と仕入れた情報を公開していきたいと思います(^0^)/

これまでの開発ネタやこれから仕入れた情報をブログにまとめていきますので、
今後もチェックしていただけるとありがたいですm(_ _)m



まず、これまでにいくつかアプリを開発して公開・アップデートしてきましたので、
それらのアプリを紹介します。


k0j1 開発アプリ一覧(2013年10月時点)

















全部英語表記になってますが、現在公開中のアプリは

■データフォルダ(通常版、有料版、シンプル版)
ペイント
スクリーンメモ
■MHP3rd 早見表 ←※これはカプコン様から停止を求められたため公開停止しています…

のアプリです。

現在も主に更新してるアプリは、データフォルダやスクリーンメモがほとんどです。

今まではアップデート中心だったのですが、他に優良な競合アプリが出てきたため、
今後は新アプリやデータフォルダの改良版等を作って公開していきたいと思っています(^^;

開発中に集めた情報や小ネタなども多くあるので、
自分用にまとめる意味でもブログに書きためていきたいので、色々情報公開していきます。



また、アンドロイダーというサイトでもアプリを紹介していますので、
よろしかったらこちらもどうぞ☆
アンドロイダー公認デベロッパー認証