SK17iのターコイズカバー

 Android, 携帯電話  SK17iのターコイズカバー はコメントを受け付けていません。
9月 232011
 

やっと注文できた&届きました。

白+ターコイズですが気に入っています。

ピンクカバー要らなくなったなあ(^^;

twitter4jでツイートする

 Android, 携帯電話  twitter4jでツイートする はコメントを受け付けていません。
9月 212011
 

twitter4jの実験。

総合的なtwitterクライアント作れるわけもないので、ツイート部分だけ作りました。

ツイート部分だけとはいえ、ツイートするだけでも先に認証部分を作る必要があります。
OAuth認証部分はadakodaさんの記事を参考にしました。

[Android] Android+Twitter4JでOAuthするためのソースコード

OAuthActivityをそのまま使わせてもらったのですが、自分の環境ではshouldOverrideUrlLoading()が動作しなかった為、onPageStarted()に書き換えました。

public void onPageStarted(WebView view, String url, Bitmap favicon)
に書き換えて、returnを削除(返り値の型がvoidなので)しただけです。

次にtwitterアプリ登録をしておきます。
twitterにログインして、設定→アプリ連携→開発者で登録。

Application Details:ツイートしたときに出るクライアント名。(表示されるかはクライアントによる)
Description:認証画面で表示されます。まずは適当で。
WebSite:そのアプリの紹介ページとかを登録しておきます。

Application Icon:アイコンです。JPG/GIF/PNGで700kBまで。認証画面で表示されますが、まずは無くてもいいです。

Application Type:アクセス権限です。認証画面で表示されますし、アプリで使用できるAPIに制限が出ます。今回はツイートしたいのでRead and Writeに設定。

Call backURL:認証後にリダイレクトされるURLです。自分のWebページを設定。一瞬見えるので「認証完了しました」とか表示させると良いかも(最悪Yahooとか何のURLでも良いです)
※本来Webサービス(OAuthConsumer)が、Twitter.com(OAuthProvider)からこのURLにアクセスされ、認証結果を受け取る事で認証OK/NGを把握するけど、今回はandroid側で遷移したURL一致を見て判断していますので一致していれば動きます

ここまで準備すればあとは、
①アプリ登録情報(Consumer keyとConsumer secret)で認証を呼び出す
②取得した認証データ(tokenとtoken_secret)を使ってツイート
するだけ。

結果こんなソースになりました。
CALLBACK、CONSUMER_KEY、CONSUMER_SECRETは消してあります。
(それぞれtwitterアプリ設定画面を確認して入力してください)

 package net.init0.android.twittertest;

import twitter4j.Status;
import twitter4j.Twitter;
import twitter4j.TwitterException;
import twitter4j.TwitterFactory;
import twitter4j.auth.AccessToken;
import twitter4j.conf.Configuration;
import twitter4j.conf.ConfigurationBuilder;
import android.app.Activity;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.SharedPreferences;

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

public class TwitterTestActivity extends Activity implements OnClickListener{
	private static final String CALLBACK = "[twitterアプリ登録ページで登録したURL]";
	private static final String CONSUMER_KEY = "[twitterアプリ登録ページに表示されるConsumer key]";
	private static final String CONSUMER_SECRET = "[twitterアプリ登録ページに表示されるConsumer secret]";

	private static final int REQUEST_OAUTH=0;

	private static long user_id=0L;
	private static String screen_name=null;
	private static String token=null;
	private static String token_secret=null;
	
	Button btn=null;
	TextView editText=null;

	//OAuthデータ保存用
	SharedPreferences pref;
    SharedPreferences.Editor editor;
	
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        btn = (Button) this.findViewById(R.id.button1);
        btn.setOnClickListener(this);
        editText = (TextView) this.findViewById(R.id.editText3);
        
        //OAuth認証データ読み込み
        pref = getSharedPreferences("t4jdata", Activity.MODE_PRIVATE);
        token=pref.getString("token", "");
        token_secret=pref.getString("token_secret", "");

        //OAuthデータ無し時認証起動
        if(token.length()==0){
        Intent intent = new Intent(this, OAuthActivity.class);
        intent.putExtra(OAuthActivity.CALLBACK, CALLBACK);
        intent.putExtra(OAuthActivity.CONSUMER_KEY, CONSUMER_KEY);
        intent.putExtra(OAuthActivity.CONSUMER_SECRET, CONSUMER_SECRET);
        startActivityForResult(intent, REQUEST_OAUTH);
        }
        
    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent intent) {
		// OAuth完了
		if (requestCode == REQUEST_OAUTH && resultCode == RESULT_OK) {
			user_id=intent.getLongExtra(OAuthActivity.USER_ID, 0L);
			screen_name=intent.getStringExtra(OAuthActivity.SCREEN_NAME);
			token=intent.getStringExtra(OAuthActivity.TOKEN);
			token_secret=intent.getStringExtra(OAuthActivity.TOKEN_SECRET);
			
			TextView mTextView = (TextView) this.findViewById(R.id.textView1);
			mTextView.setText(token_secret);
			
			//認証データ保存
			editor = pref.edit();
			editor.putString("token",token);
			editor.putString("token_secret",token_secret);
			editor.commit(); 
		}
    }


    @Override
    public void onClick(View arg0) {
        AccessToken accessToken=new AccessToken(token,token_secret);

	Configuration conf = getConfiguration();
        TwitterFactory twitterfactory = new TwitterFactory(conf);

	Twitter twitter = twitterfactory.getInstance(accessToken);

	Status status = null;
	try {
	    status = twitter.updateStatus( editText.getText().toString());
	} catch (TwitterException e) {
	    // TODO 自動生成された catch ブロック
	    e.printStackTrace();
	}
	editText.setText("");
    }
    
    private static Configuration getConfiguration() {
        ConfigurationBuilder confbuilder = new ConfigurationBuilder();
        confbuilder.setOAuthConsumerKey(CONSUMER_KEY);
        confbuilder.setOAuthConsumerSecret(CONSUMER_SECRET);
        return confbuilder.build();
    }    
    
}

tokenとtoken_secretは使いまわせるようなのでSharedPrefernceに保存し、初回アプリ起動時のみ認証(保存されていなければ認証起動)するようにしました。

あと公開予定は無い自分専用なので、アイコンは好き勝手にしました。
権利関係アレですがそういう事なのでごめんなさい。

認証画面

ツイート画面

他のtwitterクライアント(twicca)で見たところ

kyocera ECHOハッカソン

 Android  kyocera ECHOハッカソン はコメントを受け付けていません。
9月 152011
 

2011/08/06、日本androidの会横浜支部主催のkyocera ECHOハッカソンに参加してきました。

初めてのハッカソン参加でドキドキ。

鍵盤アプリを作りましたが、なんとか時間内に形にできました。必死で。

とはいえ、前に実験試作してたプロジェクトをベースに、1画面/2画面切り替えを入れて、画像作って…です。

自分レベルでは一から作ってたら絶対間に合いません。

完成品はこちら。スクリーンショットだといろいろ分かりにくい・・・

 

実機に入ってると分かりやすい。そしてECHOかっこいい。

横音(横浜支部の音チーム)を何故かアピールしてみた(^^;
(ベースとした試作プロジェクト、昨年秋冬あたりに横音ハンドベル試作後に作ったものだったので)

タッチすると音がでるは当然として、鍵盤を指でスライドして音域を変更できます。

ECHO開いて2画面モードになった時だけ2段鍵盤表示になり、上段が高音、下段が低音が鳴るよう鍵盤が繋がるようにしました。

周りがすごいメンバーだったので、優勝など当然夢の彼方でしたw

でも、初めてのハッカソンにしては頑張れたと思います。

京セラさんに頂いたセラミックピーラーは、我が家で大活躍しています。
(本当に切れ味がよく、使ってた安いピーラー速攻で捨てました)

あと、実は当日必死すぎて写真撮り忘れたのですが、後日ECHO借りてた@kassy_kzさんにapk送って、写真とスクショ撮ってもらいました。大感謝です!(^^)

9月 072011
 

androidの会の横浜支部のロボ部に触発されて。

昔PICの練習で作ったスピードメーターを作り直してみた。

当時は練習の定番16F84で、mikroC、秋月のPICライタという環境で、7セグ2桁を自力で表示してました。

今回、hrdakinoriさんのBluetoothスタック公開を受けて、Bluetoothなら色々遊べるぞー!まずは昔作ったものを作り直してみよー!という流れです。

PIC24FJ64GB002用のBluetooth stackのソースコード公開しました – hrdakinoriのいろいろ
http://d.hatena.ne.jp/hrdakinori/20110328

スタックにはPIC側でSPP受信はあったのですが、送信は無かったのでそこは作りました。
そこにタイマ張って、外部入力割り込みでパルスカウントする簡単な仕組み。

できたのがこんな感じ。

下半分です。PICSYS-24STICKという製品を使ってます。
この大きさにUSB-Bコネクタ、リセットスイッチ、入力スイッチ、チップLED*2がついてて、USB電源で動作するので勉強用の取っ掛かりには便利です。

左下がUSB-AコネクタにPC用のBluetoothドングル刺してます。

右上が車の車速パルス(黄色のワニ口)入力、車のGND(黒色のワニ口)。

(上の8PINのPIC(12F)は別で作った残骸なので関係ない)

車速パルスカウントして、BT(SPP)で送信します。

こちらが表示側。Acroで受信して速度表示します。(改造したBluetoothChatですw)

単純にBT(SPP)でカウンタ数値受け取って、時速(km/h)表示します。
(本当はOpenGLとかで表示懲りたかったけど時間的に無理ぽいので)

NoSignal表示ですが、ペアリングすると。。。

こんな感じで動作します。
(動画はぶれて綺麗に取れてないので控えます)

これだけなんですが、PIC24F買って、開発環境MPLABに変えて、ライタもPICkit3買って、部品も色々揃わず大変でした。

アキバ行ってUSB-Aコネクタ買って、次の日抵抗がないことに気がついて、2週間後にやっと暇見つけてアキバ行って、1本5円の抵抗買って・・・とか。
ソフトウェアに無いこの大変さは久々でした。。。

新minipro SK17i

 Android, 携帯電話  新minipro SK17i はコメントを受け付けていません。
9月 072011
 

そういえば買いました。キーボード最高です。

英語キーボードモデルは白・黒しかないのですが、中国キーボードモデルだと白+ピンク、黒+ターコイズの換えカバーがついて来るらしいです。

白+ターコイズがやりたいけど、カバー売ってない><
ターコイズ予定だったので、ストラップが既に水色なのですが。。。

手に入らないのでしかたなく、ピンクカバーだけ別購入しました。

暫定の予定ですが可愛すぎてアレです。。。

 

そして買って一週間で子供に落とされて、画面にヒビが(画面左上の斜め線)
絶望した!