課題
- P11のプログラムを入力、コンパイル、実行する。
- 自分のデータを差し替えて、コンパイル、実行する。
- 年齢、身長、体重を 表示するプログラムbio.cを作成
- 保存場所は Documents¥C とする
- cmdを開く
- cd Documents¥C —- パス変更
- bcc32 bio.c ————-コンパイル
- bio ——————–実行する
(TinyDB)
(Chapter 7. Android, Where’s My Car?’)
ANDROID 、私の車はどこですか
アプリの内容はロケーションセンサ(LocationSensor)でケータイの位置を記憶(TinyDB)し、別の場所に移動した後に記憶した場所がどの方向にあるかを示すものです。なお、ロケーションセンサはエミュレータでは動作しません。動作の確認はAndroidケータイで行ってください。
TinyDB : アプリを終了させても残るデ-タを持つことができる部品。デ-タはキ-とバリュ-の対で記憶される.
デザイン画面
コンポーネントリストの後半
部品の一覧(プロパティ名も変更してください)
グル-プ | 部品名 | Component上の部品名 | プロパティ名 | プロパティ値 |
---|---|---|---|---|
- | Screen | Screen1 | Title | 私の車はどこですか? |
Basic | Label | CurrentHeaderLabel | FontBold | ON |
Text | あなたの現在位置 | |||
Screen Arrangement | HorizontalArrangement | HorizontalArrangement1 | - | - |
Screen Arrangement | HorizontalArrangement | HorizontalArrangement2 | - | - |
Basic | Button | RememberButton | Text | 現在位置を記憶 |
Enabled | OFF | |||
Basic | Label | RememberedHeaderLabel | FontBold | ON |
Text | 記憶した位置 | |||
Screen Arrangement | HorizontalArrangement | HorizontalArrangement3 | - | - |
Screen Arrangement | HorizontalArrangement | HorizontalArrangement4 | - | - |
Basic | Button | DirectionsButton | Text | 現在位置から記憶した位置の方向を表示 |
Enabled | OFF | |||
Sensors | LocationSensor | LocationSensor1 | - | - |
Basic | TinyDB | TinyDB1 | - | - |
Other Staff | ActivityStarter | ActivityStarter1 | Action | android.intent.action.VIEW |
ActivityClass | com.google.android.maps.MapsActivity | |||
ActivityPackage | com.google.android.apps.maps | |||
HorizontalArrangement1の中 | ||||
Basic | Label | CurrentAddressLabel | Text | Address: |
Basic | Label | CurrentAddressDataLabel | Text | 値は空にしておく |
HorizontalArrangement2の中 | ||||
Basic | Label | GPSLabel | Text | GPS: |
Basic | Label | CurrentLatLabel | Text | 0.0 |
Basic | Label | CommaLabel | Text | ,(カンマ) |
Basic | Label | CurrentLongLabel | Text | 0.0 |
HorizontalArrangement3の中 | ||||
Basic | Label | RememberedAddressLabel | Text | Address: |
Basic | Label | RememberedAddressDataLabel | Text | 空にする |
HorizontalArrangement4の中 | ||||
Basic | Label | RememberedGPSLabel | Text | GPS: |
Basic | Label | RememberedLatLabel | Text | 0.0 |
Basic | Label | Comma2Label | Text | ,(カンマ) |
Basic | Label | RememberedLongLabel | Text | 0.0 |
このアプリでは以下の4つのイベントを使用します。
必要なイベントが分かり、このアプリがどのように動くかの大まかなイメージができたと思います。以下にイベントごとのブロックを組み立てた完成図と使用する部品を表に示しますので、それに倣って組み立てましょう。
位置情報更新時のイベントでは、現在位置を表示するラベルに値を反映し、現在の位置を記憶するボタンを使用可能にします。以下の図5の完成図のように表にある部品を組み立ててください。
RememberButtonがクリックされたときのイベントでは、記憶する位置情報を表示するためのラベルに現在の位置情報反映し、TinyDB1に同じ内容を記録します。また、位置を記憶したら方向を表示するボタンを使用可能にします。
では、先ほどと同じように部品を組み立ててください。
DIrectionsButtonがクリックされたときのイベントでは、現在の位置情報と記憶した位置情報を使って方向を表示するためのGoogleマップ用のリクエストURIを組み立ててActivityStarterに渡し、別のアプリを起動します。このイベントも先ほどと同じように例に倣って部品を組み立ててください。
アプリ起動時のイベントでは、TinyDB1に位置を保存していれば画面上の記憶した位置情報を表示するラベルに復元します。例によって、図と一覧表を見て部品を組み立ててください。
これでアプリは完成です。最後に、実際に動かしてみましょう。
今回使ったロケーションセンサはエミュレータでは動かないのでAndroid端末の実機で動かします。また、ケーブルを抜いても動かすために今までと違う手順でAndroid端末の実機にインストールします。
ブロックエディタでAndroid端末に接続し、一度アプリを起動します。その後、デザイナ画面の右上にある[Package for Phone]の[Download to Connected Phone]を選ぶと、Android端末の実機にダウンロードされます。
後は普通のアプリのように起動すれば、このように起動します。お好きな場所で「現在位置を記憶する」ボタンを押し、少し移動して「現在位置から記憶した位置の方向を表示」を押しすと、別のアクティビティ(Activity)が開き、現在位置から記憶した位置の方向を表示してくれます。
このとき、ケータイの位置情報を取得する機能をONにしておくことを忘れないでください。位置情報のONの仕方はAndroid端末の[設定]画面の[現在位置とセキュリティ]内の[GPS機能を使用]のチェックボックスを[ON]にすればOKです。
今回はTokyo Map Tourというアプリを作ります。
予め登録してある3つの場所をセレクトボタンから選択すると、その場所のマップやストリートビューが表示される、というものです。
Androidでは、あるアプリから別のアプリを起動して、それに処理を渡したり、別のアプリでの実行結果を受け取ったりすることが比較的簡単にできるのです。
Tokyo Map Tourでは、Android端末に用意されているGoogle Mapのアプリを利用します。
東京の観光地の地図を表示するアプリです。
[Choose Destination]のボタンを押すと、東京の観光地のリストが表示されます。
リストの中から、行きたい場所を選択すると、
地図が表示されます。
では、チュートリアルに従って、作ってみます。
まずは、「Designer」ですね。
使用するコンポーネントは、Image、ListPicker、ActiveStarterです。
Table 6-1. Components for the Paris Map Tour
部品 | Palette | 名前 | 用途 |
---|---|---|---|
Image | User Interface | Image1 | 東京画像 |
Label | User Interface | Label1 | Androidで東京発見を表示 |
ListPicker | User Interface | ListPicker1 | 目的地リスト |
ActivityStarter | Connectivity | ActivityStarter1 | 地図アプリを開く |
Imageに、最初の画面で表示する地図の画像を設定します。
ListPickerは、テキストデータのリストから一つのデータを選択するためのコンポーネントです。
観光地のリストを入れておくためのものです。
ActiveStarterは、アプリ内から別のアプリを起動するためのコンポーネントです。
ここでは、Google Mapを起動するように設定しています。
Table 6-2. ActivityStarter properties for launching Google Maps
属性 | 值 |
---|---|
Action | android.intent.action.VIEW |
ActivityClass | com.google.android.maps.MapsActivity |
ActivityPackage | com.google.android.apps.maps |
続いて、「Blocks Editor」
destinationsというリストを用意して、観光地の名称を入れておきます。
Figure 6-2. Creating a list is easy in App Inventor
Screen1.Initializeは、スクリーンが初期化されるときに呼ばれるブロックでしたね。
Figure 6-3. Put anything you want to happen when the app starts in a Screen1.Initialize event handler
ListPickerの要素として、destinationsリストを設定します。
そして、ListPickerが押されたときの処理。
geo:0,0?q= の文字列の後に、選択された観光地の名称が連結されます。
別のアプリ(Google Map)を起動したとき、この文字列が渡されます。
Figure 6-4. Setting the DataURI to launch the selected map
「Blocks Editor」はこれだけです。
検索して、地図が表示するのは、Google Mapの処理です。
q= の後に、検索したい文字列をくっつけていたのですね。
Figure 6-5. The list of maps for your virtual tour
Table 6-6. Virtual Tour URL’s for Google Maps
For example, you can show the Eiffel Tower map using only the GPS coordinates found in the long URL in Table 6-6 and the Maps geo: protocol:
geo:48.857942,2.294748?t=h&z=19
Figure 6-6. Choosing a list item based on the user’s selection
所要時間:20分
今度は、もう少し、凝ったGoogle Mapの使い方です。
リストから、行きたい場所を選択するまでは同じですが、
GPS を利用して、現在地を表示する機能を追加する。
第6章 センサー(1) 加速度センサー
(chapter 5. Ladybug Chase)
てんとう虫の冒険
スマホの傾きでてんとう虫をコントロール。
てんとう虫は、アブラ虫を食べて、エネルギーを蓄え。カエルに食べられたらおしまい。
コンポーネント | パレット | 命名 | 用途 |
Canvas | Drawing and Amination | FieldCanvas | 運動場 |
ImageSprite | Drawing and Amination | Ladybug | てんとう虫 |
OrientationSensor | Sensor | OrientationSensor1 | スマホの傾きでてんとう虫をコントロール |
Clock | User Interface | Clock1 | 向き変更 |
ImageSprite | Drawing and Amination | Aphid | アブラ虫(餌) |
ImageSprite | Drawing and Amination | Frog | カエル(敵) |
Canvas | Drawing and Amination | EnergyCanvas | てんとう虫のエネルギー |
Button | User Interface | RestartButton | 再スタート |
Sound | Media | Sound1 | 食べられた |
まずは、新しいプロジェクトを作りましょう。名前は、「Ladybug」とします。
Welcome to WordPress. This is your first post. Edit or delete it, then start blogging!