投稿

2012の投稿を表示しています

ZXingでバーコードリーダーを作ってみよう①

イメージ
今回は、Googleが提供しているZXingの使用方法についてまとめてみました。 ZXingは、QRコードやバーコードの生成や読み取りができるライブラリです。 Androidの定番アプリ「QRコードスキャナー」は、このZXingを使用したアプリです。 ◆ZXingのダウンロード 以下のページからZXingライブラリをダウンロードします。 http://code.google.com/p/zxing/downloads/list 今回は、ZXing-1.7.zipのバージョンをダウンロードしました。 ◆ZXing-1.7.zipの解凍 ZXing-1.7.zipを任意のディレクトリに解凍します。 ◆jarファイルの生成 (1) 事前準備 Antを使用してビルドしますので、事前にAntをセットアップしておく必要があります。 (1)-1 Apache Antのダウンロード 以下のページからダウンロードします。 http://ant.apache.org/bindownload.cgi (1)-2 apache-ant-1.8.4-bin.zipの解凍 apache-ant-1.8.4-bin.zipを任意のディレクトリに解凍します。 (1)-3 パスの設定 ここでは、C:\Program Files配下に解凍したので、以下のようにパスを通しておきます。 Path=*****;C:\Program Files\apache-ant-1.8.4\bin (1)-4 JAVA_HOMEにJDKを設定 JAVA_HOME=C:\Program Files\Java\jdk1.6.0_21 (2) jarファイルの生成 今回必要とするcore.jarとjavase.jarを生成します。 解凍して出来たzxingフォルダをカレントディレクトリとして、以下のコマンドを実行します。 zxing> zxing>cd core zxing\core> zxing\core>ant 「BUILD SUCCESSFUL」が表示されたことを確認 core配下にcore.jarが作成されます。 ...

【更新】聴いて、しゃべって英単語

イメージ
◆「聴いて、しゃべって英単語」とは 英単語の発音をチェックして、自ら声に出してみる。 楽しみながらネイティブな発音を習得できる英単語学習アプリです。 かなり正確な発音を要求しますので、最初はなかなか正解できないかも知れません。 是非あきらめずに何度もチャレンジして見てください。 次第に正解率が高くなることでしょう。 その時、あなたの発音はネイティブに通じるレベルとなっていることでしょう。 Google playでダウンロード ◆新しくなったところ 1.デザインを一新して、操作性が良くなりました。 2.「戻る」ボタンにより、間違えた問題を再チャレンジできます。   3.出題範囲を「全て」「未解答」「不正解」から選択できます。 4.「成績」ボタンから学習結果をグラフで確認できます。 5.メニューキーから学習履歴をクリアできます。   ◆出題範囲について 中学英語の基礎が習得できていれば、英会話に於いてかなりの範囲をカバーできるとのことです。 そういった意味で、本アプリでは中学3年間分の英単語を出題範囲としています。 ◆英単語の再生音量について 再生音量はAndroid端末の着信音量ボタンで調整してください。 ◆英単語の再生について 本アプリで英単語を再生するには、「テキスト読み上げ」の設定を行う必要があります。 Android端末から、以下の設定を実施してください。 [設定]-[テキスト読み上げ]-[音声データをインストール] ※機種によっては、[設定]-[音声合成]-[音声データをインストール] 設定が完了しましたら、本アプリをいったん終了して再実行してください。

【新作】ハングル単語マスター

イメージ
ハングルは日本語のように用言の活用があります。 したがって、ハングル単語を基本形で覚えてもあまり役に立ちません。 そこで、「ハングル単語マスター」は、単語をフレーズの中で覚えるスタイルをとっています。 単なる丸暗記ではなく、用言の活用のされ方を理解しながら覚える学習アプリです。 登録されている単語は、日常生活で使用する基本単語です。 今後のアプリ更新によって、登録単語をより充実させていく予定です。 どうぞご期待ください。 尚、当アプリはハングル文字の構造や発音の仕方を一通り学習した方を対象としています。 もちろん、ハングルの入門書でこれらを学習しながら利用することも可能です。 Google Playでダウンロードする ◆ハングルの入力方法について 通常パソコンで使用されている2ボル式という入力方式で入力します。 例えば、「이름(名前)」は「ᄋ」「ᅵ」「ᄅ」「ᅳ」「ᄆ」の順で入力していきます。     誤った入力文字の消去は[bs]キーで行ってください。 「ᄈ」「ᄍ」「ᄄ」「ᄁ」「ᄊ」「ᅤ」「ᅨ」の2重子音と2重母音の入力は、 [shift]キーで入力モードを切り替えて行ってください。 当アプリでは、ハングルキーボードの入力方法も覚えることが出来ます。 将来、パソコンでハングル入力を行いたいと思っている方にも有用なアプリとなっています。 ◆その他の特長 ・ 出題範囲を「全て」「未解答」「不正解」から選択できます。 「学習」ボタンで学習をスタートすると、まず出題範囲を選択するダイアログが表示されます。「全て」「未解答」「不正解」の中から出題範囲を選択してください。 ・「成績」ボタンから学習結果をグラフで確認できます。 ・メニューキーから「単語一覧」を選択すると、当アプリに登録されている単語一覧を確認でできます。 ・ メニューキーから「設定」を選択すると、 出題品詞を「全て」「名詞」「動詞」「形容詞」「副詞」の何れかに設定できます。

【新作】Block Snake

イメージ
古典的なsnakeゲームが生まれ変わりました。 6個のステージの中から好きなステージを選択してプレイしてください。 操作がとてもシンプルなので、誰でも楽しむことができます。 ちょっとした空き時間に楽しんでください。 Android marketへ

AdMobの導入

イメージ
久しぶりの投稿になります。 今回は、AdMobの導入についてまとめてみました。 広告を挿入して多少なりとも収入が獲得できれば、アプリ作成の励みにもなりますよね。 ◆AdMob SDKのダウンロード 最新のSDKは以下のURLからページから取得できます。 https://developers.google.com/mobile-ads-sdk/download ダウンロードしたZIPファイルを解凍すると、JARファイルとREADMEおよびdocsフォルダが生成されます。 ◆SDK JARの追加 Eclipse でプロジェクトの右クリックから[Properties] を選択します。 [JAVA Build Path] の [Libraries] タブを選択して、[Add External JARs] をクリックし、ダウンロードしたJAR を追加します。 ◆マニフェストの編集 AndroidManifest.xmlファイルを編集します。 ①com.google.ads.AdActivity を宣言する。 <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.company" android:versionCode="1" android:versionName="1.0"> <application android:icon="@drawable/icon" android:label="@string/app_name" android:debuggable="true"> <activity android:label="@string/app_name...

リソースの描画

サンプルの「Snake」を題材として、アプリ作成の基本をまとめるシリーズです。 第五回目は「リソースの描画」です。 まずは、リソースをCanvasに描画する手順についてです。 リソースをBitmapオブジェクトとして取得する場合と、Drawableオブジェクトとして取得する場合とに分けることができます。 ◆リソースをBitmapオブジェクトとして取得して描画する場合 ①リソースオブジェクトの取得 Resource res = Context.getResource() ②Bitmapオブジェクトの取得 Bitmap image = BitmapFactory.decodeResource(res, R.drawable.画像ファイル名) ③CanvasクラスのメソッドでCanvasに描画 Canvas.drawBitmap(image, int x, int y, Paint p) ◆リソースをDrawableオブジェクトとして取得して描画する場合 ①リソースオブジェクトの取得 Resource res = Context.getResource() ②Drawableオブジェクトの取得 Drawable image = res.getDrawable(R.drawable.画像ファイル名) ③DrawableオブジェクトのメソッドでCanvasに描画 image.setBounds(int left, int top, int right, int bottom) image.draw(Canvas canvas) 次に、「Snake」に於けるリソースの描画です。 「Snake」では、リソースをそのままCanvasに描画してはいません。 まずは、リソースからDrawableオブジェクトとして取得したimageを、CanvasではなくBitmapに、画像データとして描画しています。 【TileView.java】 public void loadTile(int key, Drawable tile) { Bitmap bitmap = Bitmap.createBitmap(mTileSize, mTileSize, Bitmap.Config.ARGB_8888);//...① Canvas canvas = new Canvas(bitmap);//......

キーイベント

サンプルの「Snake」を題材として、アプリ作成の基本をまとめるシリーズです。 第四回目は「キーイベント」です。 「Snake」では、ゲーム操作を矢印キーで行うことになっています。 キーが押されると、それを知らせるイベントが発生します。 まずは、そのイベントを受け取れるようにする必要があります。 Viewがキーのイベントを受け取れるようにするには、以下のメソッドを呼び出して、キー操作やトラックボールでフォーカスできる許可を与える必要があります。 setFocusable(true) 「Snake」では、以下のように設定しています。 【SnakeView.java】 private void initSnakeView() { setFocusable(true); --------- } ※尚、画面タッチによるフォーカスを許可するメソッドは、setFocusableInTouchMode(true)です。 これで、Viewでイベントを受け取るための準備ができました。 では、次にイベントを受け取ってからの処理をみてみましょう。 キーが押さて、イベントが発生するとonKeyDownメソッドが呼び出されます。 boolean onKeyDown(int keyCode, KeyEvent event) 受け取る引数の内、keyCodeは操作されたキーを識別する整数値です。 keyCodeの値によって条件分岐すれば、操作されたキー毎に異なる処理をさせることができます。 keyCodeは、KeyEventクラスの中で定数として定義されています。 以下は、定数の一部で、「Snake」で利用されています。 KEYCODE_DPAD_UP 上向き矢印キー KEYCODE_DPAD_DOWN 下向き矢印キー KEYCODE_DPAD_LEFT 左向き矢印キー KEYCODE_DPAD_RIGHT 右向き矢印キー 以下は、「Snake」でのonKeyDownメソッドです。 キーを識別して、ヘビの進む方向を保持しているmNextDirectionメンバ変数を更新しているのがわかります。 【SnakeView.java】 public boolean onKeyDown(int keyCode, KeyEvent msg) { ---------------------...

カスタムView

イメージ
サンプルの「Snake」を題材として、アプリ作成の基本をまとめるシリーズです。 第三回目は「カスタムView」です。 カスタムViewとは、TextViewやButtonなどの標準のViewではなく、android.view.Viewを拡張して独自に作成したViewのことです。 「Snake」では、TileViewというカスタムViewを作成しています。 ・Viewの属性 例えば、標準のTextViewには、textColorやtextSizeなどの属性が用意されています。 カスタムViewに於いても独自の属性を用意することができます。 属性は、res/values/attrs.xmlで作成します。 「Snake」では、以下ように定義しています。 【attrs.xml】 < ?xml version="1.0" encoding="utf-8"?> < resources> < declare-styleable name="TileView"> < attr name="tileSize" format="integer" /> < /declare-styleable> < /resources> 「declare-styleable name」にはカスタムViewのクラス名を、「attr name」には作成する属性名を、「format」には属性のフォーマット名を設定します。 ※属性のフォーマット:integer,float,boolean,string,color,dimension ・レイアウト 「Snake」では、カスタムViewをXMLファイルで、以下のようにレイアウトを定義しています。 レイアウトのSnakeViewは、作成したTitleViewを、更に拡張して定義したカスタムViewです。 つまり、カスタムViewを拡張したカスタムViewとなっています。 【snake_layout.xml】 < FrameLayout xmlns:android="http://schemas.android.com/apk/res/android...

定期処理ハンドラ

サンプルの「Snake」を題材として、アプリ作成の基本をまとめるシリーズです。 第二回目は「定期処理ハンドラ」です。 定期処理ハンドラとは、Handlerクラスを利用して、一定の間隔で処理を行わせる仕組みのことです。 例えば、場面場面でキャラクターの出現数の違いによって、処理の重さが異なる場合があります。 処理の重さの違いでキャラクターの動きにムラは出したくありません。 また、端末の処理能力の違いでキャラクターの動く速度が変わってしまうことも避けたいです。 その解決方法の一つとして、定期処理ハンドラの仕組みがあります。 「Snake」では、以下のように定期処理ハンドラを使用しています。 【SnakeView.java】 class RefreshHandler extends Handler { @Override public void handleMessage(Message msg) { SnakeView.this.update(); SnakeView.this.invalidate(); } public void sleep(long delayMillis) { this.removeMessages(0); sendMessageDelayed(obtainMessage(0), delayMillis); } }; public void update() { if (mMode == RUNNING) { long now = System.currentTimeMillis(); if (now - mLastMove > mMoveDelay) { clearTiles(); updateWalls(); updateSnake(); updateApples(); mLastMove = now; } mRedrawHandler.sleep(mMoveDelay); } } sendMessageDelayedメソッドによって、指定時間(delayMillis)後にMessageオブジェクトを送信しています。 Messageオブジェクトは、handleMessageオブジェクトで受信されます。 handleMessageオブジェ...

インスタンスの保存

イメージ
androidのSDKには多くのサンプルが用意されています。 これはとても良い教材であり、アプリを作成する際のヒントとして、とても重宝しています。 今回から数回にわたり、サンプルの「Snake」を題材として、アプリ作成の基本をまとめてみます。 第一回目は「インスタンスの保存」です。 インスタンスの保存は何故必要なのでしょうか? 端末の向きが変わって画面が回転した場合は、いったんActivityは破棄されて、onCreate()メソッドで再作成されます。 また、長い時間背面に移動していたActivityが前面に戻る様な時も、いったんActivityは破棄されて、onCreate()メソッドで再作成されます。 Activityが破棄されるということは、インスタンスが保持していたデータも消失してしまうことを意味します。 そこでインスタンスの保存が必要になるのです。 「Snake」の例でいうと、背面に移動していたActivityが前面に戻ってきたとき、ゲームの続きからプレイできるように、ヘビとリンゴの位置情報やスコアなどを保存しておく必要があります。 以下のように保存しています。 【Snake.java】 @Override public void onSaveInstanceState(Bundle outState) { //Store the game state outState.putBundle(ICICLE_KEY, mSnakeView.saveState()); } 【SnakeView.java】 public Bundle saveState() { Bundle map = new Bundle(); map.putIntArray("mAppleList", coordArrayListToArray(mAppleList)); map.putInt("mDirection", Integer.valueOf(mDirection)); map.putInt("mNextDirection", Integer.valueOf(mNextDirection)); map.putLong("mMoveDelay", Long.valueOf(mMoveDel...

PreferenceActivityのレイアウトをカスタマイズ

イメージ
PreferenceActivityにTextViewやButtonを配置したいときがあります。 (例)「 国旗deクイズ 」に於ける使用例 今回は、PreferenceActivityのレイアウトをカスタマイズする方法をまとめてみました。 PreferenceActivityクラスはListActivityを継承したクラスです。 必要に応じてリストにコンポーネントを設定することで設定画面を作成する仕様となっています。 リスト本体のレイアウトは、ListActivityクラスを継承したサブクラスを作成するときと同じす。 つまり、オーバーライドしたonCreate()メソッドの中でsetContentView()によって設定します。 以下はPreferenceActivityのデフォルト設定です。 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(com.android.internal.R.layout.preference_list_content); mPreferenceManager = onCreatePreferenceManager(); getListView().setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY); } ・XMLレイアウト(preference_list_content.xml) <xml version="1.0" encoding="utf-8"?> <ListView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@android:id/list" android:layout_width="fill_parent" android:layout_height="fill_parent" android:drawSelectorOnTop="fals...

【新作】国旗deクイズ

イメージ
国旗クイズの決定版。表示される国旗の国名を、リストから選択して当てるゲームです。     Android marketへ ゲームをスタートすると、出題範囲を選択するダイアログが表示されます。 「全て」「未解答」「不正解」の中から出題範囲を選んでください。 選択した範囲からランダムに10問が出題されます。 また、設定画面からは出題地域を選択することもできます。 「全域」「アジア」「アフリカ」「ヨーロッパ」「北アメリカ」「南アメリカ」「オセアニア」の中から選んでください。     ゲーム結果について、過去10回の成績をグラフ表示で確認することができます。 1ゲームあたり数分で、楽しく気軽に楽しめる国旗クイズです。通勤通学の電車の中など、毎日のちょっとした空き時間にお楽しみいただけます。