heikyoのblog

[Android] 電話帳アプリを呼び出し、選択したアドレスをメーラを起動したときにセットする

Aボタンを押すと、電話帳アプリを呼び出し、TextViewにアドレスをセットして、
Bボタンを押すと、メーラーを起動して、選択したアドレスを宛先にセットします。
※注意:  Android1.xだと「ContactsContract」が使えないみたいなんで、Android2.x以上で使ってください。

device-2011-07-24-011901device-2011-07-24-012031

Sample.java

public class Samole extends Activity implements OnClickListener {


private static final int PICK_CONTACT = 0;

private Button selectButton;
private Button sendButton;

private TextView addressText;

private String id;

private String uri;

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.personal);
 

selectButton = (Button)findViewById(R.id.selectbtn);

sendButton = (Button)findViewById(R.id.sendbtn);

addressText = (TextView)findViewById(R.id.textview);

selectButton.setOnClickListener(this);

sendButton.setOnClickListener(this);
}


@Override

public void onClick(View v) {

switch(v.getId()) {

case R.id.selectbtn:

Intent pickIntent = new Intent(Intent.ACTION_PICK,
ContactsContract.Contacts.CONTENT_URI);
startActivityForResult(pickIntent, PICK_CONTACT);

break;

case R.id.sendbtn:

Intent sendIntent = new Intent();

sendIntent.setAction(Intent.ACTION_SENDTO);

sendIntent.setData(Uri.parse("mailto:" + uri));

sendIntent.putExtra(Intent.EXTRA_SUBJECT, "Test"); // 件名

sendIntent.putExtra(Intent.EXTRA_TEXT, "Test");  // 本文

startActivity(sendIntent);

break;

}

}

@Override

public void onActivityResult(int reqCode, int resultCode, Intent data) {

super.onActivityResult(reqCode, resultCode, data);

switch(reqCode) {

case(PICK_CONTACT):

if(resultCode == Activity.RESULT_OK) {

Uri contactData = data.getData();

Cursor c = managedQuery(contactData, null, null, null, null);

while(c.moveToNext()) {

id = c.getString(c.getColumnIndex(c.getColumnName(11)));

}

}

Cursor emails = managedQuery(ContactsContract.CommonDataKinds.Email.CONTENT_URI,
null,
ContactsContract.CommonDataKinds.Email.CONTACT_ID + " = " + id,
null,
null);

while(emails.moveToNext()) {

uri = emails.getString(emails.getColumnIndex(
ContactsContract.CommonDataKinds.Email.DATA));

}

addressText.setText("address: " + uri);

}
}

}

[Android] ButtonでTagっぽい表現をしてみる

まず、お知らせから...
パチスロの小役カウンター「スロカウンター」を作りました。
よろしくお願いします。

このアプリでモード別にカウンターを切り替えていきたかったんですが、Tab×ScrollViewがうまいことできない...(勉強不足だと思いますが)なので、Buttonをタブっぽい感じにして、切り替えていくたびに、カウントを表示するビューを変えていくという方法にしました。
device-2011-07-22-130157device-2011-07-22-130216
全てのコードはgithubにあげておきます。

まず、選択されているとき、選択されていないときの、2種類のボタンのxmlファイルを作成します。

focus_button.xml

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

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

    <stroke android:width="3px" android:color="#0000FF" />  

    <padding android:left="2px" android:top="2px"  

            android:right="2px" android:bottom="2px" />  

    <corners android:radius="2px" />

    <solid android:color="#00FFFF"/>

</shape


notfocus_button.xml

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

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

    <stroke android:width="3px" android:color="#0000FF" />  

    <padding android:left="2px" android:top="2px"  

            android:right="2px" android:bottom="2px" />  

    <corners android:radius="2px" />

    <solid android:color="#00FFFF"/>

</shape


メインコードここから

SampleButtonTabActivity.java

package com.sample.buttontab;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;

public class SampleButtonTabActivity extends Activity implements OnClickListener {
private static final int MODE_A = 1;
private static final int MODE_B = 2;
private Button aButton;
private Button bButton;
private Button changeButton;
private Button countButton;
private TextView countText;
private int aCount = 0;
private int bCount = 0;
private int mode;
public SampleButtonTabActivity () {
mode = MODE_A;
};
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
        
aButton = (Button)findViewById(R.id.modeAbutton);
aButton.setBackgroundResource(R.drawable.focus_button);
bButton = (Button)findViewById(R.id.modeBbutton);
bButton.setBackgroundResource(R.drawable.notfocus_button);
changeButton = (Button)findViewById(R.id.changebutton);
changeButton.setOnClickListener(this);
countButton = (Button)findViewById(R.id.countbutton);
countButton.setOnClickListener(this);
countText = (TextView)findViewById(R.id.counttext);
}
    
@Override
public void onClick(View v) {
switch(v.getId()) {
case R.id.changebutton:
modeChange();
break;
case R.id.countbutton:
count();
break;
}
}
    
private void modeChange() {
switch(mode) {
case MODE_A:
mode = MODE_B;
aButton.setBackgroundResource(R.drawable.notfocus_button);
bButton.setBackgroundResource(R.drawable.focus_button);
countText.setText("MODE_B: " + String.valueOf(bCount));
break;
case MODE_B:
mode = MODE_A;
aButton.setBackgroundResource(R.drawable.focus_button);
bButton.setBackgroundResource(R.drawable.notfocus_button);
countText.setText("MODE_A: " + String.valueOf(aCount));
break;
}
}
private void count() {
switch(mode) {
case MODE_A:
aCount++;
countText.setText("MODE_A: " + String.valueOf(aCount));
break;
case MODE_B:
bCount++;
countText.setText("MODE_B: " + String.valueOf(bCount));
break;
}
}
}

[Android] 現在位置をつぶやいたりできるアプリを作ってみた

名は「ポスマップ」。現在地取得ボタンで現在地を取得し、共有ボタンでG-mailやTwitterで位置情報を付加したメッセージを送ることができる。とても単純なアプリ。
ちなみにアプリのインストールはこちらから。 コードはこちらに。

pos1device-2011-07-14-153954



「ココメッセ」は、現在地をつぶやいたりメールでお知らせすることが出来るアプリです。

送られてきたメッセージはGoogle mapsのリンクが貼り付けてあるので、ブラウザでも、確認することができます。

「今暇なんだけど、誰かここらへんにいますか」みたいなこと簡単に送信することができたら、楽だなと思ったんで作ってみました。

子供が「今どこにいる?」とか、「どこで遊んでいる?」など、いろいろ心配な方には、子供にこれを使わせてほしいです。ということで、子供でも、説明書無しで使い方が理解できるくらい単純なものにしたかったのでこんな感じになりました。 

[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" >

livedoor プロフィール
記事検索
カテゴリ別アーカイブ
  • ライブドアブログ
heikyoのblog