スクリーンショット 2015-01-30 16.28.45

Android アクティビティ(アプリを実行)

こんにちは、うさです。 本日で今まで使っていた参考書が一通り終了しまして、 その最後のコンテンツが「アクティビティ」となります。 まず1つ目は、テキストデータの受け渡しのアクティビティです。 これはいくかの「XMLファイル(レイアウト)」を用意して、 それぞれの画面に移動するというものです。 まずは、メインページのコードです。 ボタンを3つ用意してそれぞれ違うページへ移動できるようにJavaで処理を行います。 スクリーンショット 2015-01-30 16.28.45 そして下記のコードがメインページに置けるjavaコードです。 こちらのコードで重要なのは です。 インテントを生成して、Intent()の第1引数でContextクラスのインスタンス、第2引数で対象のアクティビティが定義されています。 ここでは、「Activity1.class」を呼んでいます。 そして、その「Activity1」がこちらです。 finish()により、アクティビティが終了(停止状態)となり、元の画面へと移動する事になる。 その画面がこちら スクリーンショット 2015-01-30 16.36.06 ページは3つ作ったのですが、全て同じ画面表示と処理なので1つだけの記載とします。 続いては他のアプリケーションを呼んでアクティビティに表示します。 「http://」から始まる文字列を記入すると、Webブラウザを起動します。 また、「検索実行ボタン」の上に文字列を記入してボタンを押すと、ブラウザでそのキーワードを検索します。 そのレイアウトの「XMLファイル」がこちら スクリーンショット 2015-01-30 17.10.30 そして、ボタンクリックによりアプリを呼び出す為のコードを以下に示します。 それぞれの処理を見ていきます。 「ACTION_VIEW」でデータ表示というアクションを 「Uri.parse()」でテキストへ入力された文字列をURI形式に変更しています。 「検索実行ボタン」の処理はこちらで Web検索を指定するアクションの「ACTION_WEB_SEARCH」、 「putExtra()」でインテントに格納しています。 その第1引数の「SearchManager.QUERY」は検索文字列を示しており、第2引数で啓作文字列を設定しています。 本日で一通り終えたので、よりJavaの知識を身につける事とiOSの勉強に入っていきます。 以上うさでした。
blog 2015-01-29 11.07.48

androidのアクティビティ操作

こんにちは!よしときです。今日は前回の続きからアクティビティの操作についてやってみました。   前回からの続き  

データの読み書きと通信

プリファレンスの読み書き 前回はファイルの読み書き、DBへの読み書きときまして、今回はプリファレンスの読み書きです。 プリファレンスというのはアプリの設定情報を保存する為の機能で、気軽にデータの読み書きを行うことができるそうです。 なんのこっちゃという感じなんですが、、 まースコープみたいな?感じ?だと思っておきます! 動きとしてはDBの読み書きと変わらず書き込みした文字列を読み込みで表示させるというもの。 blog 2015-01-29 11.07.48 まったく同じですw     次に通信を利用して読み込みを行う方法をつかってみました。 WEB上にテキストファイルを置いておきそれを通信で持ってきて表示させる物です。   blog 2015-01-29 11.07.34   こんな感じ。 「これはテストです」というtxtファイルをWEB上にアップロードしておきそれを読み込みました。 通信を使うときは前回同様manifest.xmlでインターネット接続を可能にしておく必要があるのをすっかり忘れてうまくいかなかったのは秘密ですw   本に載っているHTTP通信のオープンクローズっていうのがちょっと理解できなかったのですが、通信開始って言う感じの意味だと思っておきます。   さらに、これはスレッドで動いているんです。でた。久々に出会いました。スレッドw スレッドは複数のプログラムを同時に処理するって記憶なのでなぜスレッドを使っているかちょっと分からないのですが、どうやら通信している間に他のことが出来なくならないようにってことみたいですね。 お、本に注意書きがありました。 Androidではユーザーインターフェースはメインスレッドでしか操作できないという制限があるようです。 そして通信処理は独自スレッドでの実装が必須になっているようです。   な、なるほど。。。ハーーイ!     次!     次はシステムクリップボードというものを使いテキストやURIをコピー&ペーストするプログラムです。 blog 2015-01-29 11.49.43   テキストやURIは元々コード上に組み込んであります。 目に見えては分かりません。というかこれ本当に作った人しか分からないw   インテントのコピーにもカメラ起動のインテントがもともと用意しておき、それをコピーしてペーストすることでカメラのインテントに接続できるという仕組み。 わざわざwwwめんどくさwww まぁ、こんなものもコピーできるのがクリップボードですよーってことですかね!   さて!次の章!  

アクティビティ

この章ではアクティビティの操作関連をやるみたいです。 いままでは単体、またはちょっとしたアクティビティを作るだけだったのですが、それらをもっと活用する為の章です。   まず、やったのがアクティビティの呼び出し アプリ内でOSが標準で保持するアクティビティ、及び自作したアクティビティを呼び出しています。 blog 2015-01-29 17.12.30   それぞれちゃんとこの画面から遷移させることができました!   次はアクティビティ間のパラメータの渡しです! blog 2015-01-29 13.15.29 この画面から blog 2015-01-29 13.15.57 この画面を呼び出して、OKをおすと blog 2015-01-29 13.16.05 表示されました!! というもの。この辺りは多用しそうなのでしっかり覚えておきたいですね!   といったかんじで、今日は報告だけとなりましたが、着々と進んでおります! 早く一通り終わらせて小さいゲーム作りたいです!!!

Android 「Google Mapsで問題が」

こんにちはうさです。 Android StudioでGoogle Mapsのアプリを起動させて、 あるポイントにズームするようにしましたが、こんな表示ができきてしまった。 スクリーンショット 2015-01-29 14.19.42 こちらのエラーメッセージを確認してみると ../../sdk/emulator/opengl//host/libs/Translator/GLES_CM//GLEScmImp.cpp:glColorPointer:433 error 0x501 上記のコードのようにあるポイントを指定してズームをしようすると、 GoogleとAndroidのロリポップエミュレータでアプリケーションがクラッシュしてしまうようです。 エミュレータの設定を変えたりしてみたのですが、 改善しない!! 原因はよくわかりませんが、 new LatLng(35.671241 , 139.765041) , 15); のズームは(15)に設定されているみたいなのですが、 この値を(13)以下に設定するととりあえずは動いた。 スクリーンショット 2015-01-29 14.29.38 今後これでは利用しづらいので、 ズームの値を変えなくても、アプリが起動出来るように 改善していく。

Android StudioでGoogleMapsを利用

こんにちは、うさです。 今回はAndroidStudioの開発環境でGoogleMapsの利用をしてみました。 少し設定が必要ですがそんなに難しくなく助かりました。 1から手順を踏んでいきます。 ①まず、APIをを利用する為に「Maps API Key」なるものの入手が必要になってくるみたいです。 それを入手する為に、JDKのフィンガープリントというキーコードを確認します。 その確認の仕方(Macの場合)は、ターミナルを開いて 「keytool -v -list -keystore ~/.android/debug.keystore」とそのまま入力します。 すると、『キーストアのパスワードを入力してください』と表示されるので、Enterを押すと 証明書のフィンガプリント: MD5: ◯:◯:◯:◯:◯:◯:◯:◯:◯:◯:◯:◯:◯ SHA1:◯:◯:◯:◯:◯:◯:◯:◯:◯:◯:◯:◯:◯ SHA256: ◯:◯:◯:◯:◯:◯:◯:◯:◯:◯:◯:◯:◯ といった具合に表示があるので、「SHA1」の部分だけメモしておきます。 ②次に先ほどの「SHA1」を使って「Maps API Key」の入手にははいります。 「https://code.google.com/apis/console/」にアクセスして 「API」の「Google Maps Android API v2」の「OFF」を押して「ON」にします。 スクリーンショット 2015-01-29 12.01.31 続いて、「認証情報」の「新しいキーを作成」を押して スクリーンショット 2015-01-29 12.06.28 「Androidキー」を押します スクリーンショット 2015-01-29 12.06.41 そして下の枠に、先ほどメモした「SHA1のフィンガプリント」をコピペでもして「;」で区切って、 後で新しいプロジェクトを作る時の「パッケージ名」を書きます。 スクリーンショット 2015-01-29 12.08.27 作成をすると「認証情報」に下記のように「Androidアプリのキー」が取得できました。 「APIキー」は後で使うのでこれもメモしましょう。 スクリーンショット 2015-01-29 12.10.30 ③APIキーが取得できたので、今度は「Android Studio」の方で「Android SDK Manager」を起動させて 『Android 5.0.1(API 21)』利用の場合、「Google APIs ARM EABI v7a System Image」と 『Extras』から「Google Play services」と「Google Repository」をインストールします。 ④インストールできたら、新しいプロジェクトを作っていきます。 このとき、「Project location」が「Androidアプリのキー」の「パッケージ名」と同じにします。 でないと、Mapが表示されなくなってしまいます。 「Create New Projectウィザード」で「Google Maps Activity」を選択して、 新しいプロジェクト作成は完了です。 ④そうしたら、「Project」ウィンドウの「google_maps_api.xml」を開きます。 この中の「YOUR_KEY_HERE」の部分を先ほどメモした「APIキー」の値に書き換えます。 ⑤最後にGoogle Maps専用のエミュレータを作ります。 今まで使っていたエミュレータと変えるところは、 「Android~」ではなくて「Google APIs~」を使います。 スクリーンショット 2015-01-29 12.45.26 そして、アプリを起動させると、 スクリーンショット 2015-01-29 12.48.56 「Google Maps」が表示されました。 これを使って、色々な表示をしてみたいと思います。 以上うさでした。 こちらに書いてある通りに行いました。
スクリーンショット 2015-01-28 18.30.53

Android 「SQLiteを用いて」

こんにちは、うさです。 本日は、「SQLiteDatabaseクラス」を用いて、データベースから特定のデータを検索するアプリを作りました。 ざっと、こちらのコードのポイントを見ていきます。 こちらは「query」には実行するSQL文(SELECT)が記載され、 「null」の部分は 例えばSELECT文が(SELECT * FROM namelist WHERE point = ?)となっていた時に「?」に対応する式が入ります。 「new int[]{条件}」こういった形ですね。 続いて、こちらは 特定のデータをひとまとめにしてビューに渡す時に利用するオブジェクトで 「ArrayList」を用いています。 表示はこんな感じ スクリーンショット 2015-01-28 18.30.53 以前に「MySQL」や「PostgreSQL」をやった分わかりやすかったという印象です。 この他に、テキストを書き込んで、それをデータベースに保存するというものもあるので、 データベースの利用の仕方は知っておく。 以上、うさでした

Eclipseががが

こんにちは!よしときです!本日三つ目の記事w   というより問題発生です!Eclipse上でエミュレータ起動して、SQL利用していたら突然落ちたきり起動しなくなってしまいました。   もちろんすぐにグーグル先生に頼ったところ結構よくある話なんですね。。   という訳で少しその辺をチューンナップ   まずはEclipseの設定eclipse.iniファイルの中の使用するメモリ量を変更しました。 一応メモリ4Gのパソコンだから大丈夫だよね。。と恐る恐るあげてみました。   次に起動する為にターミナルより /Application/eclipse/eclipse -clean ということで何かをクリーンにしましたw   無事起動できたので今度は環境設定を変更して画面下にヒープ領域を表示させ、強制ガーベッジコレクションをすることが出来るようにしました。     ここまでやってなんですが、、、正直変化は分からないですが、とりあえずいまのところ落ちてないのでよしとしましょう!! うーん。その辺もちゃんと勉強しないと不安だなぁ。。
blog 2015-01-28 17.07.37

AndroidでSQLを使う!

こんにちは!よしときです。違う内容なので記事を分けてみました。   今回はAndroidでデータの読み書きをするのにSQLを使おう!という勉強です。 使用するのはAndroidが標準で搭載しているSQLiteを使います。   機能としてはテキストを読み書きするというもので、本当に簡単なことしかやっていません。 blog 2015-01-28 17.07.37   基本的なSQLコマンドはほぼ変わらない感じでcreate,drop,update,insert,deleteとかですね。今回はselect文は使わずqueryコマンドを使用しています。その辺の違いはこれから勉強していこうかなというところ。 ちょっとずつ違う方が混乱しますね。   そしてそれぞれをjavaで制御していくと言った感じ。   正直に言うとばっちり理解したわけではないのですが、SQLは慣れだと知っているのでバシバシつかって慣れていきたいと思います。   ここまで!
Fragment

Fragment「フラグメント」を使う

こんにちは!よしときです。 今日は前回から引き続きandroidのアプリの勉強で、フラグメントなるものを使うことを覚えました。   今まではレイアウトをするとき、全てMainActivityにJavaで書いていたんですねー しかし、それだと異なるデバイスになったときに最適化が難しいことから、Activityを再利用可能にするっちゅーことらしいです。 いまいちイメージはつかないんですが、、 なので自分なりに整理してみました。     一つのActivityってのがいわゆる一つの「画面」だとして、それをワーーっとそのまま作るとどのデバイスでもそのように表示される。 つまり こんなイメージ Fragment   それだとよろしくないから色々最適かしたいなぁというときに上記のようにActivityのみを使って書いている場合はいちいち書き直さなくてはいけないのでめんどくさい!!   そこでフラグメントという機能を使いそれぞれをバラバラに作りそれらの紐付け次第でいろんな構成にしてしまおう!という。 こんな感じ Fragment2   オブジェクト指向って感じですねw   実際にはレイアウトをxmlファイルで作ってしまってそれぞれ紐づけるのをjavaでやると言った感じです。   さて、そして実際に作ってみた訳ですが、今回は三つの画面を紐づけてボタンで行き来するものです。 blog 2015-01-28 12.29.52 まずは起動して最初の画面。Main画面です。   ここからは自分でもごちゃごちゃなので整理しながら流れを書いていきます!
  • main.xmlにてボタンを配置して、それをMainFragment.javaのonCreateViewメソッドでビュー生成してやります。そこでボタンも紐づけます。
  • それをactivity_main.xml(全体のレイアウトと言った感じ)のfragment(枠みたいな?)に紐づけます。
  • そしてその動きをMainActivityで制御します。(ボタン押したら違う画面に移動しますよーみたいなメソッドとか)
  • ボタンを押すとそれぞれの画面に遷移します
  blog 2015-01-28 12.30.18 blog 2015-01-28 12.30.35 それぞれ遷移した後の画面です。 これもそれぞれ上記と同様の方法で文字を表示しています。。(これくらいなら全然フラグメント使う必要ないですねw)   今回やったのはこんな感じでありがたみとか全くなのですが、これがいろんなデバイスでいろんな表示のさせかたをしてねーってなると役に立つようです。   そしてAPI11以降はこのフラグメントを利用するのが主流のようで、Activityで書くことは推奨されていません(これが前回の非推奨でまくりの理由の一つでした)     実際ソースの量は変わらないので再利用できるこっちのほうがいいってことなんですかね? ネットを見ると賛否両論みたいですが。。     とまぁ。ここまでやるのにものすごく時間がかかって全然進まなかったのですよ、今日は。   もう一つやったのですがEclipseに不調が起きたのでこの記事はここまでにします!!    
スクリーンショット 2015-01-27 17.09.51

iOSアプリ開発~iOSアプリの基本構造編~

はい!イノマーです。   昨日からiOSの勉強を始め、Xcodeの使い方を簡単に学びました。 そして今日は一度は挫折したObjective-Cの復習をしつつ、実際に簡単なアプリを作ってみました。   今回はXcodeのSingle View Applicationテンプレートを使用して猫年齢を人年齢に換算するアプリを作ってみたいと思います。 テンプレートを開くとこのようにAppDelegateファイルとViewControllerファイルのそれぞれヘッダファイル(.h)、実装ファイル(.m)が分かれて出てきます。 スクリーンショット 2015-01-27 17.00.51                     これらを簡単に説明すると ・AppDelegate アプリ起動直後や停止/復帰の際に行う処理を書く ・ViewController  画面のタップなどの操作に応じる処理を書く   またUI部品を置くためのストーリーボード スクリーンショット 2015-01-27 17.09.51                     スイッチやスライドバーなど視覚的に作業ができて便利です!笑   実際に作って見ましょう! 上の画像のようにボタン、ラベル、テキストフィールドを配置して、それぞれの項目を記入して行きます。   実装ファイルはこんな感じ   実際に動かしてみるとこんな感じ   CatAge   なんとか簡単なアプリを一つ完成させる事ができ、なんとなく構造までを理解する事ができましたが、まだまだObjective-Cは曖昧な部分が多くもっと勉強が必要です。 明日はビュー・画像の設定とイベント管理について学習していきます!  
スクリーンショット 2015-01-27 15.39.03

Android レイアウトについてのあれこれ

こんにちは、うさです。 今回はレイアウトについて復習と重点をメモ程度に書いていきます。 僕は今まで レイアウト用のコードは「XMLファイル」に プログラミング用のコードを「Javaファイル」に記載していきました。 そうすることで、レイアウトの展開イメージとプログラムの動作イメージが掴みやすいからです。 また、不具合がある箇所や改良すべき点が見つけやすくなります。 「XMLファイル」におけるレイアウトではプログラムの実行中に画面の配置を変えたり新たなウィジェットを配置する事ができないので、 そういった場合は「Javaファイル」で処理を書く必要がでてきます。 「XMLファイル」の記載方法とそれによるレイアウトについて確認していきます。 こちらのコードは3つのボタンを縦方向に並べたものになります。 並べ方は「vertical」が縦方向で「horizontal」が横方向への配置になります。 それぞれのボタンのサイズはandroid:heightとandroid:widthで設定出来ます。 単位としては「dp」でピクセルを基本にしています。 このピクセルの欠点は解像度によって表示されるサイズが異なってしまうことのようです。 それを改善する為には単位を「dpi」とすることで解像度が違っても同じサイズで表示できます。 続いて余白の設定についてですが、 android:paddingTop=””で上部に余白、android:paddingLeft=””で左側に余白を付ける事ができます。 ボタンにも活用ができます。 スクリーンショット 2015-01-27 15.39.03 レイアウトの基本をしっかりと抑えてUIを意識したアプリを目指します。 以上うさでした。