• 検索結果がありません。

Mapアプリは「MapActivity」クラスを継承します。Mapの表示は「MapView」に対し て行います。以下の①~⑤の手順でプロジェクトを作成します。

①ビルド・ターゲットに「Google APIs」を選択

②map用AVDの生成(一度だけ)

「ウインドウ」-「Android SDKおよびAVDマネージャー」を選択。

③マニフェストにライブラリとパーミションを設定 マニフェストに下線部を追加します。

<?xml version="1.0" encoding="utf-8"?>

<manifest xmlns:android="http://schemas.android.com/apk/res/android"

・ ・

<uses-permission android:name="android.permission.INTERNET"/>

<application android:icon="@drawable/ic_launcher"

android:label="@string/app_name">

・ ・

</activity>

<uses-library android:name="com.google.android.maps"/>

</application>

</manifest>

④main.xmlの記述

マップを表示するウイジェットに<com.google.android.maps.MapView>を指定します。

apiKeyに先に取得してあるAndroid Maps API Keyを指定します。

・main.xml

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

android:orientation="vertical"

android:layout_width="fill_parent"

android:layout_height="fill_parent"

>

<com.google.android.maps.MapView android:id="@+id/mapview"

android:layout_width="fill_parent"

android:layout_height="fill_parent"

android:enabled="true"

android:clickable="true"

android:apiKey="0O4FkQeWz-4XtxKCnntbnqHMMVUwaT-GQjEsK4g"

/>

</LinearLayout>

⑤Javaソースコードの記述

地図を表示するだけなら、MapView を置いてある、main.xmlを

「setContentView(R.layout.main);」で表示するだけでよいです。

MapActivityクラスではisRouteDisplayedメソッドを実装しなければいけません。ルー

ト情報を表示する場合は true を、そうでない場合は false を返します。ただし、Android Mapsには走行方向が分かる機能が用意されているわけではないので、こうしたルート情報 は自前で実装しなければなりません。従って通常はfalseを返すだけの処理となります。

・Map1.java package jp.map1;

import com.google.android.maps.MapActivity;

import android.os.Bundle;

public class Map1 extends MapActivity { @Override

public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);

setContentView(R.layout.main);

}

protected boolean isRouteDisplayed() { return false;

} }

「注」このプログラムでは地図の位置を指定していないので、デフォルト位置が採用され ます。エミュレータではアメリカ、実機では日本です。

・エミュレータ ・実機

30 章 センサー(実機のみ)

Android端末には各種センサーが搭載されています。加速度センサ、磁界(磁気)センサ、

方位センサ、ジャイロセンサ、輝度(照度)センサ、圧力センサ、温度センサ、近接セン サなどです。どのセンサーが使えるかは実機ごとに異なります。

センサーを使用できるようにするには、センサーマネージャーを使って使用したいセン サーを取得します。さらに取得したセンサーにリスナーを付けセンサーの変化で処理を行 います。この章ではセンサーの各種使用方法を説明します。

30-1 センサーの種類

Androidがサポートするセンサーとして以下があります。使用できるセンサーは実機ごと

に何をサポートするか異なります。

センサーを示す定数 値 センサーの種類

TYPE_ACCELEROMETER 1 加速度センサ。

TYPE_MAGNETIC_FIELD 2 磁界(磁気)センサ。

TYPE_ORIENTATION 3 方位センサ。

TYPE_GYROSCOPE 4 ジャイロセンサ。

TYPE_LIGHT 5 輝度(照度)センサ。

TYPE_PRESSURE 6 圧力センサ。

TYPE_TEMPERATURE 7 温度センサ。

TYPE_PROXIMITY 8 近接センサ。

センサーを使用できるようにするにはSensorManagerを使ってセンサーマネージャー smを取得します。使用したいセンサーをgetSensorListメソッドを使ってセンサーマネー ジャーから取得します。ここでは複数のセンサーを登録し、使用可能なセンサーの種類を 調べるため、各センサーオブジェクトをsensorsリストに追加していきます。

SensorManager sm=(SensorManager)getSystemService(SENSOR_SERVICE);

ArrayList<List<Sensor>> sensors=new ArrayList<List<Sensor>>();

sensors.add(sm.getSensorList(Sensor.TYPE_ACCELEROMETER));

同様に8種類のセンサーをsensorsに追加したら、以下でセンサーの名前とタイプ(上 の表の定数の値)を取得します。

for(List<Sensor> sensor : sensors){

if (sensor.size()>0){

sensor.get(0).getName() // センサーの名前 sensor.get(0).getType() // センサーのタイプ }

}

「例題30-1」使用できるセンサーを調べます。センサーの名前とタイプをTextViewに表 示します。

・main.xml

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

android:orientation="vertical"

android:layout_width="fill_parent"

android:layout_height="fill_parent"

>

<TextView

android:id="@+id/text"

android:layout_width="fill_parent"

android:layout_height="wrap_content"

/>

</LinearLayout>

・Sensor1.java package jp.sensor1;

import java.util.ArrayList;

import java.util.List;

import android.app.Activity;

import android.hardware.*;

import android.os.Bundle;

import android.widget.TextView;

public class Sensor1 extends Activity { @Override

public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);

setContentView(R.layout.main);

TextView tv=(TextView)findViewById(R.id.text);

SensorManager sm=(SensorManager)getSystemService(SENSOR_SERVICE);

ArrayList<List<Sensor>> sensors=new ArrayList<List<Sensor>>();

sensors.add(sm.getSensorList(Sensor.TYPE_ACCELEROMETER));

sensors.add(sm.getSensorList(Sensor.TYPE_MAGNETIC_FIELD));

sensors.add(sm.getSensorList(Sensor.TYPE_ORIENTATION));

sensors.add(sm.getSensorList(Sensor.TYPE_GYROSCOPE));

sensors.add(sm.getSensorList(Sensor.TYPE_LIGHT));

sensors.add(sm.getSensorList(Sensor.TYPE_PRESSURE));

sensors.add(sm.getSensorList(Sensor.TYPE_TEMPERATURE));

sensors.add(sm.getSensorList(Sensor.TYPE_PROXIMITY));

String txt="";

for(List<Sensor> sensor : sensors){

if (sensor.size()>0)

txt+=sensor.get(0).getName()+":"+sensor.get(0).getType()+"¥n";

}

tv.setText(txt);

} }

「実行結果」GALAXYでは以下のようになりました。加速度センサ、磁界(磁気)センサ、

方位センサ、輝度(照度)センサ、近接センサをサポートし、ジャイロセンサ、圧力セン サ、温度センサをサポートしないことがわかります。

31 章 カメラ(実機のみ)

Androidのカメラ機能はCameraクラスのオブジェクトを使用してプレビュー、オート

フォーカス、撮影といった動作を行います。カメラのプレビュー画面はSurfaceViewに表 示します。プレビュー、オートフォーカス、撮影という動作はCameraクラスのメソッド で行うことができます。撮影した画像は内部メモリに保存されていますので、実際のファ イルとして保存するのはユーザが別途コードを書かなければなりません。このようなカメ ラの撮り方や画像の保存方法、フォーカスの設定方法などの基本処理をまず説明します。

撮影した写真に日付をプリントしたり、撮影画像の上にイメージや手書きの絵を書き入 れるといったオーバーレイ機能についても説明します。

31-1 カメラの映像をプレビュー表示し、シャッターを切る

カメラの映像をプレビュー表示し、シャッターを切るまでを説明します。写真はまだ保 存できません。

関連したドキュメント