2012Androidアプリ開発!!Androidアプリを作成したい人必見!!Androidアプリの基本動作はもちろんのこと、本には載っていない、調べても見つからない、ソースを修正するだけでは解決できない、アプリ開発者が直面する問題の解決方法についても記載していきます。*基本的にはレイアウトファイル(xml)を使わないソースを載せております。onActivityResult)簡単なActivity遷移を記述してみましょう。画面を立ち上げて、ボタンを押下するとsub画面が立ち上がるアプリです。サブ画面でアプリの戻るボタンを押すと、サブ画面が終了して、メイン画面に戻る仕様です。1;//Activityを開始。></activity></application></manifest>こんな感じです。■この処理を繰り返すと基本的なActivityの動かし方でした。String.valueOf(iNo));こちらの処理で呼び出し元のActivityから、新しいActivityに引数を渡しています。i.getStringExtra("count");こちらで、先ほど渡した引数を取得しています。setResult(RESULT_OK);で、呼び出し先のActivityから、呼び出し元のActivityに引数を渡しています。呼び出し先の処理が成功したら1呼び出し先の処理が失敗したら0を返す様な形にすると、呼び出し元のActivityに戻った時に処理結果を取得できます。startActivity)今回は今いるActivityから、他のActivityを呼ぶ方法を紹介します。パッケージ名.クラス名);startActivity(i);上記のように実装すると、新たな画面を呼ぶことができます。上記の方法だと新しい画面に引数を渡していません。"渡したい値");startActivity(i);こんな感じで完成です。難しいことはないので、ご安心を。intent.putExtraは何個でも作れます。{}にコールバックされます。↓にそれっぽいのを書いておきます。iMAIN);break;default:break;}}}どうですか?動きました??動かない人はSubActivityを作ってください。普段のActivityと同じもので大丈夫です。うごかない人いますか?startActivityForResultで止まってしまう人。></activity>をmanifest.xmlに追記してください。</activity>の下にでも追記してください。以上で、Activityの呼び方は終了です。起動と同じくらい大事なのが終了処理です。終了処理について、少しだけ触れたページを以前作成致しました。http://androidgamepark.blogspot.jp/2012/12/finish.html内容としてはfinish();はいいよ。いうことでしたね「内容うっすい」とみなさん思われたでしょう。本当はいろいろ、紹介したかったのですがね。処理の終了という概念が難しいからです。完全に処理を終わらせるのか?タスマネに出現しない状態にすればいいのか?ユーザー目線での処理終了なのか?なので、一番無難なfinish();だけにしました。画面が増えれば増えるほど、Activityの管理は難しくなります。そのアプリに課金、PUSH通知を実装していれば、やはり、アプリの終了の仕方が変わります。用はいろいろだということです。あるんですけれども、Androidアプリで、Activtyの管理はとても大切です。自分のアプリで最適なActivotyを是非見つけてください。終了処理(finish)アプリを終了させる方法として、finish();があります。this.finish();使い方は上記な感じで。現在のActivityが終了となります。戻るボタンを押すと作動する仕組みにするのが、お勧めです。「終了しますか?」見たいなダイアログを出すのもいいですね。■サンプルバックボタンを押すとアクティビティーを終了させます。(bolean);等ありますが、System.exit()はActivityのライフサイクルを無視した強引な終了方法。android.os.Process.killProcess(android.os.Process.myPid());はプロセスを直接終了させるパワープレイ。一応推奨されているらしいです。finish();の代わりにいろいろと試してみてください。個人的にはいろいろな端末で検証した結果、finish()が一番よさそうでした。Androidリアクション:2012年12月17日月曜日バイブ機能(Vibrator)今回はアプリ制作時に地味に大切なバイブ機能について記します。「ゲーム作っている訳ぢゃないから、バイブなんていらNE-YO」などなどまぁまぁ。おさえておさえてとりあえず記載すると。500};//50ミリ秒後に100ミリ秒の振動。500ミリ秒休憩して1000ミリ秒の振動。-1);}}このような感じで使います。第1引数に、振動させたい時間をミリ秒で指定します。引数が2つの場合には、振動パターンを格納した配列を第1引数に配列内の振動を繰り返す場合には第2引数を0、一度きりなら、-1バイブを止める時はvib.cancel();結構、簡単に組み込めます。話を戻してなぜ、バイブが大事か?ユーザーのタッチイベントが成功したことをユーザーに通知するために大事です。意味わからない日本語になってしまいましたが。言い換えると、ユーザーが画面をタッチしたときに、ちゃんと押せているか不安になるのを解消するためにバイブで軽く震わせます。これで、ユーザーはボタンをしっかり押せたことを認知して、ボタンを連打したり、無闇に画面遷移しなくなるでしょう。想定外の操作をされると、サポート大変ですもんね。使い方を覚えておくとものすごく便利です。Toast.LENGTH_SHORT).show();}}これだけなんですが。Toast.LENGTH_SHORT).show();出現時間を延ばしたいなら、Toast.LENGTH_SHORTをToast.LENGTH_LONGで。数字で指定することもできるので、3で3秒表示。どんな状況でもActivityが落ちることなく出現してくれます。何でか理由はわかりませんが。関係ない話ですが、トースト見たいにパーンって、出現するから、Toastって言うんですかね??しかも、イメージは食パンですね。Androidリアクション:画像が表示されない。OPENGLを使って、画像を描画する際には画像サイズを2のべき乗にしないといけません。単位はピクセルで2481632641282565121024なので、1024×512とか32×32などなど。制限があり面倒なのですが。しょうがないですよね。「こんなことしなくても、大丈夫だよ!!」という情報をお持ちの方は是非よろしくお願いいたします。Play以外のマーケットGooglePlayから、保留にされたアプリやGooglePlayでは公開できないアプリ等々、お持ちではないでしょうか?今回はそんな方々のために、GooglePlay以外にアプリを公開できるサイトを紹介いたします。他にもお勧めのサイトがある!!という方はお手数ですが、ご連絡のほどよろしくお願いいたします。Storeホームhttp://apps.opera.com/ja_jp/デベロッパー登録http://apps.opera.com/ja_jp/developers.phpブラウザで有名なオペラのマーケットです。■メリットデベロッパー登録無料!!アプリ審査なし!!GooglePlayのスクリーンショットがそのまま使える!!■デメリット集客力が悪いアプリダウンロード数が信用できない!!ユーザー統計が乏しい日本語対応しているが、日本向けではない集客力がないのが何よりものデメリットですが、オペラのブランドが魅力的です。軽い気持ちで覗いてみてください。Tapnowホームhttp://www.tapnow.jp/デベロッパー登録http://www.tapnow.jp/developer/index.html日本人用のマーケットです。■メリットデベロッパー登録無料!!アプリ審査なし!!GooglePlayのスクリーンショットがそのまま使える!!日本人向けのアプリも大丈夫!!■デメリット集客力が悪い。日本語バリバリのアプリも公開できるのが魅力的です。集客力はかなりあるサイトです。下手すると、GoolePlayよりインストールされることもあります。審査が厳しく、審査機関も長いです。イメージとしてはアップルを想像してくださればOK!!審査に落ちても、とても丁寧に修正箇所を教えてくれるので、問題ありません。Amazonデベロッパー登録https://developer.amazon.com/welcome.html■メリットデベロッパー登録無料!!集客力あり!!SamSungよりも、審査は緩い日本向けのアプリでも世界向けでも大丈夫!!■デメリット審査あり。Sumsungほど、厳しくはない。統計情報が調べにくいデベロッパーページが重いこちらも最近は集客力のあるサイトです。審査はSamSungよりも緩めで、審査で何を調べているかよくわかりません。日本版のマーケットも開けたことで、現在最も注目しているマーケットでもあります。Amazonのインタレストマッチングの機能を生かして、マーケットが発展していくことを切に願っています。★まとめ個人的におすすめはAmazonとSumSungです。アプリによっては、GooglePlayよりもインストール数が飛躍的に伸びます。GooglePlayのランキング上位というのは、Androidアプリ界ではどんな広告にも負けない最強の集客力を持っています。使えない!!ある日、社内で「アプリが使えない!!」と報告を受けました。いやいや、もうリリース済だし、バグ報告ないし、てか何の機能が使えないの?その説明だけでは、何が悪いかわからないもっと詳細を伝えてよぉ。問題の端末を試したところ。画面が表示されていません原因は何?端末依存?まぁ、いろいろと疑う点はあるが、とりあえず調査!!。調査の結果、Android4以降の端末で画面が表示されていないことが判明!!結構、影響範囲が広い!!問題の個所や対応方法をいろいろと調べたが見つからない!!偉い人にバレる前に問題解決しなければ。/>今まで、8だったのが使えなく、7にすると、Android4以降でも使えました。一度、android:minSdkVersionの設定をいじってみるといいかもしれませんね。APIキーを取得したら、いよいよ組込みです。extendsをActivityから、MapActivityniに変更いたします。マネージャー】からインストールをお願いいたします。Toast.LENGTH_LONG).show();//-------------------------------------------}}ざっと書くとこんな感じです。//-------------------------------------------//1mMapCtrl.setZoomで縮尺レベルを設定しています。//-------------------------------------------//-------------------------------------------//2LocationManagerのrequestLocationUpdatesで現在いる場所を取得しています。this);上記のように書くと、5000ミリ秒(20秒)毎に更新をおこなうようになります。処理を押さえておくといいかと思います。見慣れた緯度経度と同じ単位にするために10万倍(1E6倍)しております。android:name="android.permission.ACCESS_MOCK_LOCATION"/><uses-library>タグは<application>タグ内の好きなところで<uses-permission>は<application>の外で記載してくださいね。MapをAndroidアプリに組みます。keyを作成致します。keyを作成するのに証明鍵のフィンガープリントの準備をこれから行います。証明鍵??フィンガープリント??証明鍵とは、アンドロイドアプリのソースをビルドする時に用いる鍵のこと。パスワード出力結果のフィンガープリントの内容(MD5:)をメモキーストアーは.keystoreのファイルです。C:\Users\(ユーザ名)\.android\debug.keystoreキーストアのパスワードを入力してください:(エンターキーのみ押下)コマンドプロンプト出力結果のフィンガープリントの内容(MD5:)をメモ---------------------------------------------------------------------------いづれにしても、プロンプトの出力結果の証明書のフィンガープリントをメモしなければいけません。再度https://developers.google.com/android/maps-api-signupのページに行きます。fingerprint:この右側の空欄に先ほど、メモしたフィンガープリントを入力!!間違えないように気を付けてください。KEYがGenerateされています。失敗すると、戻るボタンを押して再入力この画面で私は小一時間くらい、時間を潰してしまいましたぁ。プロンプトの出力結果をコピれればいいんですけど。keyをコピーして、下準備は完了です。これで、ようやくソースの組み込みに取り掛かれます。folder!このようなエラーがでて、ビルドができなくなってしまった。【プロジェクト】→【クリーン】を実行しても、Eclopseの再起動しても、ダメだぁ!!うん。いや、2時間システムの環境変数を確認したところ、Android-SDKのpathの設定が変更されていた!!とりあえず、再設定しなおしたら、ビルド成功!!なんで、pathの設定が変更されていたか、気になるけど今回はとりあえず、これで問題解決です。Play以外のマーケット画像が表示されない。findViewById)レイアウトの隠し方。消したいけど、消せないこと。消したくないけど、消えてしまったこと。LinearLayoutのパーツを消すことはとても簡単です。使い方は上記な感じで。現在のActivityが終了となります。startActivity)今回は今いるActivityから、他のActivityを呼ぶ方法を紹介します。