heikyoのblog

[Android] 公開用のGoogleMap API Keyを取得する

MacでAndroid GoogleMap API Keyの取得で取得するしたAPIKeyはどうやらこれは、デバッグ用らしい。
このAPIKeyを利用して公開しても地図が全く表示されない...

ではどうやって、公開用のAPIKeyを取得するのか。

Android Marketにアプリを公開する際にkeystoreを生成したと思います。

 52)
この時に設定したパスワードを使用します。

そして、Macの場合、ターミナルで、下記のコマンドを実行。

$ keytool -list -keystore /Users/heikyo/keystore/sample.keystore

※ちなみにターミナルで文字化けに困った場合、「ターミナル」→「環境設定」→「設定」→「詳細」で言語環境を「日本語(Shift JIS)」に変更すると、文字化けが無くなると、思います。

すると「キーストアのパスワードを入力してください:」と聞かれるので、先程のパスワードを入力→Enter...
すると、下記のような形で返ってくるはず...
証明書のフィンガープリント (MD5):    xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx

この証明書のフィンガープリントをコピー、ここhttp://code.google.com/intl/ja/android/maps-api-signup.html)で、先程のコピーをテキスト欄に貼り付け、"Generate API Key"ボタンをクリックすれば、「Android GoogleMap API Key」が発行されます。

ここで発行されたAPI Keyを、公開するアプリのgooglemapsのAPI Keyにすれば、Android Marketからインストールしても、地図がちゃんと表示されるはずです。

[Android] バイブ機能をつける簡単なサンプル

アプリを開発しているとき、何かをユーザーに知らせたい時、トーストと一緒にバイブ機能をつけた。
あまりバイブ機能に関する記事がなかったので、書いてみる。

今回は、ボタンをクリック-->バイブの簡単なサンプルを載っける。


Vibe.java

import android.app.Activity;

import android.app.Notification;

import android.app.NotificationManager;

import android.os.Bundle;

import android.view.View;

import android.widget.Button;

public class Vibe extends Activity {

private NotificationManager notificationManager;

    @Override

    public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.main);

        Button button = (Button)findViewById(R.id.button1);

        button.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View v) {

Notification notification = new Notification();

notification.vibrate = new long[]{0, 200, 100, 200, 100, 200};

notificationManager = (NotificationManager)getSystemService(NOTIFICATION_SERVICE);

notificationManager.notify(R.string.app_name, notification);

}

});

    }

} 

notification.vibrate = new long[]{0, 200, 100, 200, 100, 200};
*ココはバイブのOFF/ONの時間の指定(ミリ秒)

androidManifest.xml

*マニフェストへの記述は忘れがちっぽいから気をつけて~

<uses-sdk android:minSdkVersion="8" />

<uses-permission android:name="android.permission.VIBRATE"/> //<-----ココを追加

<application android:icon="@drawable/icon" android:label="@string/app_name" >

[Android] ListViewでの画面遷移

前に書いたSQLiteデータベースを作成して、ListViewで一覧表示するをベースに、球団名をクリックすると、そのチームに所属する選手を画面遷移でListViewに表示してみた。


チーム一覧
04)

「東京スーパースターズ」をクリックすると、下の画面のように画面遷移します。
23)


main.xml

<LinearLayout

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

android:orientation="vertical"

android:layout_width="match_parent"

android:layout_height="match_parent">

<ListView 

android:id="@+id/list"

android:layout_width="fill_parent"

android:layout_height="fill_parent"/>

</LinearLayout>



list_item.xml

ここではListViewの1行分のレイアウトをTextViewで定義します。

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

<TextView

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

android:layout_marginLeft="6px"

    android:layout_width="wrap_content"

    android:layout_height="wrap_content">

</TextView>

DatabaseOpenHelper.java

前回とさほど変わらないが、「チーム名」を追加
package jp.sample;


import
android.content.ContentValues;

import android.content.Context;

import android.database.sqlite.SQLiteDatabase;

import android.database.sqlite.SQLiteOpenHelper;

public class DatabaseOpenHelper extends SQLiteOpenHelper {

// データベース名の定数

private static final String DB_NAME = "MEMBER";

// テーブル名

public static final String TABLE_NAME = "member";

// カラム名

public static final String COLUMN_ID = "_id";

public static final String COLUMN_NAME = "name";

public static final String COLUMN_POSITION = "position";

public static final String COLUMN_NUMBER = "number";

public static final String COLUMN_TEAM = "team";

/**

* 初期投入サンプルデータ

*/

private String[][] datas = new String[][]

{"山田太郎", "捕手", "2", "東京スーパースターズ"},

{"岩鬼正美", "三塁手", "5", "東京スーパースターズ"},

{"里中智", "投手", "1", "東京スーパースターズ"},

{"殿馬一人", "二塁手", "4", "東京スーパースターズ"},

{"微笑三太郎", "外野手", "7", "広島東洋カープ"}

};

/**

* コンストラクタ

*/

public DatabaseOpenHelper(Context context) {

// 指定したデータベース名が存在しない場合は、新たに作成されonCreate()が呼ばれる

// バージョンを変更するとonUpgrade()が呼ばれる

super(context, DB_NAME, null, 1);

}

/**

* データベースの生成に呼び出されるので、 スキーマの生成を行う

*/

@Override

public void onCreate(SQLiteDatabase db) {

db.beginTransaction();

try{

// テーブルの生成

StringBuilder createSql = new StringBuilder();

createSql.append("create table " + TABLE_NAME + " (");

createSql.append(COLUMN_ID + " integer primary key,");

createSql.append(COLUMN_NAME + " text,");

createSql.append(COLUMN_POSITION + " text,");

createSql.append(COLUMN_NUMBER + " text,");

createSql.append(COLUMN_TEAM + " text");

createSql.append(")");

db.execSQL( createSql.toString());

db.setTransactionSuccessful();

} finally {

db.endTransaction();

}

// サンプルデータの投入

db.beginTransaction();

try{

for( String[] data: datas){

ContentValues values = new ContentValues();

values.put(COLUMN_NAME, data[ 0]);

values.put(COLUMN_POSITION, data[ 1]);

values.put(COLUMN_NUMBER, data[ 2]);

values.put(COLUMN_TEAM, data[ 3]);

db.insert(TABLE_NAME, null, values);

}

db.setTransactionSuccessful();

} finally {

db.endTransaction();

}

}

/**

* データベースの更新

*/

@Override

public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

// データベースの更新

}

}


MemberList.java

チーム名を表示。そして、チーム名を選択して、選択したチーム名をインテントでMemberList2へ。

package jp.sample;

import android.app.Activity;

import android.content.Intent;

import android.database.Cursor;

import android.database.sqlite.SQLiteDatabase;

import android.os.Bundle;

import android.view.View;

import android.widget.AdapterView;

import android.widget.AdapterView.OnItemClickListener;

import android.widget.ArrayAdapter;

import android.widget.ListAdapter;

import android.widget.ListView;


public
class MemberList extends Activity implements OnItemClickListener{

protected SQLiteDatabase db;

protected ListAdapter adapter;

protected ListView cigaretteList;

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

db = (new DatabaseOpenHelper(this)).getWritableDatabase();

cigaretteList = (ListView)findViewById(R.id.list);

Cursor c = db.query(true, "member", new String[] {"team"},
null, null, null, null, null, null);

c.moveToFirst();

CharSequence[] list = new CharSequence[c.getCount()];

for (int i = 0; i < list.length; i++) {

list[i] = c.getString(0);

c.moveToNext();

}

c.close();

cigaretteList.setAdapter(new ArrayAdapter<CharSequence>(this,
R.layout.list_item, list));

cigaretteList.setOnItemClickListener(this);

}

public void onItemClick(AdapterView<?> parent,
View view, int position, long id) {

String team = (String)cigaretteList.getItemAtPosition(position);

Intent intent = new Intent(MemberList.this, MemberList2.class);

intent.putExtra("TEAM_NAME", team);

startActivity(intent);

}

 

MemberList2.java

MemberListから受け取ったチーム名をもつ選手をデータベースから検索して、表示させる。
package jp.sample;

import android.app.Activity;

import android.database.Cursor;

import android.database.sqlite.SQLiteDatabase;

import android.os.Bundle;

import android.widget.ArrayAdapter;

import android.widget.ListView;

public class MemberList2 extends Activity{


protected SQLiteDatabase db;

protected ListView cigaretteList;

protected String team;


public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

db = (new DatabaseOpenHelper(this)).getWritableDatabase();

cigaretteList = (ListView)findViewById(R.id.list);

team = getIntent().getStringExtra("TEAM_NAME");

Cursor c = db.query("member", new String[] {"name"}, "team='" + team + "'",
null, null, null, null);

c.moveToFirst();

CharSequence[] list = new CharSequence[c.getCount()];

for (int i = 0; i < list.length; i++) {

list[i] = c.getString(0);

c.moveToNext();

}

c.close();

cigaretteList.setAdapter(new ArrayAdapter<CharSequence>(this,
R.layout.list_item, list));

}

}

[Android] 続・Android SDKをアップロードした時に気をつけること

前回の日記 - Android SDKをアップロードした時に気をつけることでとりあえず開発が再開できると思ったら、xmlファイルが開けなくなった。

 

解決策 


ターミナルで
/Applications/eclipse/eclipse -clean
を実行したら解決!!

[Android] Android SDKをアップロードした時に気をつけること

Android SDKを「revision10」にアップロードして、「Android SDK and AVD Manager」を開こうとすると、「This Android SDK requires Android Developer Toolkit version 10.0.0 or above. Current version is 9.0.0.v201101191456-93220. Please update ADT to the latest version.」的なエラーが出た。


解決策


「ヘルプ」-->「新規ソフトウェアのアップデート...」の
「すでにインストールされている」をクリック。
20)

すると、 「Elipse インストール詳細」ページが開かれるので、バージョンが「9.0.0.v201101191456-93220」になっているのを選択し、「更新...」ボタンをクリック。
 22)

更新が始まります。更新中に、Eclipseを再起動しますかと聞かれますが、再起動してOKです。

 これで、「Android SDK and AVD Manager」が開けました。
livedoor プロフィール
記事検索
カテゴリ別アーカイブ
  • ライブドアブログ
heikyoのblog