ラベル Java の投稿を表示しています。 すべての投稿を表示
ラベル Java の投稿を表示しています。 すべての投稿を表示

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年6月13日金曜日

【アプリ活用】DevAppsDirect

icon DevAppsDirect

GitHubなんかで公開されている数多くのライブラリのサンプルを実際にアプリ内でダウンロードして実行できるデモアプリです。全部確認してみましたが、自分のアプリにも取り入れたい物が結構ありましたので、いずれ使っていきたいですね。

動作している端末によっては、デモの内起動できないものもありますが、デモ自体は随時更新されているので、日々新しいライブラリを確認することができてとても便利です☆


今回その中で、簡単に組み込めそうで今後使っていきたいと思っているものを紹介していきます(^O^)/




①PagedDragDropGrid


このライブラリはグリッドで画像等を表示し、アイテムを長押しするとそのアイテムを別な場所に
移動することができます。自動で並び替えをせず、ユーザーが好きに並び順を決めたい場合に
使えるかと思います。

データフォルダでは自動で並び替えているため使いドコロが今のところありませんが、
いずれ新しいアプリででも使用してみたいライブラリです(^^)


対応OS:Android2.2(API 8)以上



②Showcase View




最近色々なアプリでみかけるようになったライブラリですね。
ヘルプやチュートリアルなどで、操作の説明するときなどに使われています。
ボタンを強調してテキストで説明したり、アニメーションによる解説、強調位置を移動させて順々に説明することができます。

使える用途も多いかと思いますし、初回のチュートリアルなんかで丁寧に解説したいときに取り入れていきたいなと思っています。

できれば説明なしに直感で使えるアプリにできることが理想ですけど、
機能を増やすとどうしても説明が必要になってきますしね(^^;



③ArchMenu


画面上には2つのボタンがありますが、左上のボタンをタッチするとボタンからみぎにメニューが飛び出します。
その下のボタンをタッチすると右上にメニューがそれぞれ飛び出してきます。

NEXUS5では解像度の関係でメニューが小さく表示されてしまっているようですが、調整できれば
ビジュアル的にもよさ気なので、ゲーム等のアプリを作った際には試してみたいライブラリです。

色々ライブラリを見つけてて思うのですが、使いドコロを考えるのが難しいですよね(^^;

対応OS:Android 2.0以上

2014年5月28日水曜日

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

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

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

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

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




用意するアイコン

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


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

 


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




描画処理

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

2014年4月30日水曜日

【Java】Myコーディングスタイル

今回はアプリを作成する上でのJavaのコーディングスタイルとして、
自分なりに行っているコーディング規約を紹介していきます(^o^)丿

私個人のコーディング規約ですので参考程度に見ていただければと思います(^o^;

概要

細かくわかれますので概要として以下の内容についてコーディング規約を説明していきます。


・コーディングスタイル
 ■入れ子のかっこ{}で1行使う
 ■字下げはタブ、または半角スペース×2の倍数

・命名規約
 ■変数名の規則
 ■メンバ変数には「m_」を付ける
 ■定数は大文字と下線のみ
 ■長くても意味のある名前を付ける
 ■クラス名

・コメント
 ■出来る限り多くコメントをつける
 ■if文やswitch文ではすべてのケースでコメント追加
 ■不具合の修正箇所にコメントをつける 
 ■現在把握している問題についてコメント
 ■入れ子が多い場合には行末コメント
 ■Javadocに対応する書き方に統一

・プログラミング規約
 ■データ型のクラスにはfinalを宣言
 ■例外キャッチ時はprintStackTrace

・メンテナンスによる既存ソースの手入れ
 ■既存ソースでは行われていない意外性のある方法で行わない
 ■命名規約の注意
 ■コメント