2011年12月23日金曜日

イヤホンジャックアクセサリ

スマートフォンをカスタマイズしていますか?

カバーや液晶保護シールが一般的ですが、
おしゃれなものがなく、似たようなものばかりですよね。

オリジナリティ出したい!という方にはコチラがお勧めです。

あなたのスマートフォンにイヤホンジャックは付いていますか?
イヤホンジャックに付けるアクセサリです。
イヤホンジャックカバー、イヤホンピアスとか呼ばれています。

いろいろな種類があったので、まとめてみました。

シンプル系

葉っぱ
ネジ
動物系

食品系
食品系

キラキラ系
キラキラ系
動物キラキラ系


シンプルなものからおもしろ系、女子が好きそうなキラキラ系などいろいろあります。

注意しないといけないのは、イヤホンジャックの位置です。
機種によっては横にあったり、そもそもなかったりします。

自分だけのオリジナルスマートフォンにしてみてはどうでしょうか?

<ニュースリソース>
スマートフォン 専用 アクセサリー スマホ キャップル
スマホ女子はキラキラがお好き!? イヤホンジャックをキラめかせるアクセサリー『i-Diamond』
Androidケータイのイヤホンジャックに、おしゃれと機能をプラス! キティやミッフィーデザインの「プラギィ」
ドロイド君をiPhoneとかブラックベリーのイヤホンジャックに挿してみた。可愛すぎ
海外でも話題! 個性派スマホグッズ plugy android
プレゼントにも◎ 女心をくすぐるスマホ向けピアスがカワイイ! 男性向けもあるでよ~
【グッズ情報】イヤホンジャックアクセサリー、今度は葉っぱ!「happa PLUG APLI」
【アクセサリー】ドロイド君といつも一緒!イヤホンジャックアクセサリー!
【グッズ情報】新鮮な寿司ネタを豊富に入荷しました(笑)「ネタ系食品スマホピアス」

2011年11月30日水曜日

[Android][Help]動画のコマ送り・コマ戻しの方法(注:できてないです)

Androidで動画のコマ送り・コマ戻しがしたいのですが、
 数日調べて分からなかったので調査結果だけをメモします。

 ・Androidではフレームごとのデータを取得する方法がAPIでは用意されていない。
  (VideoView や MediaPlayerではそのようなAPIがないということ。)

 ・MediaMetadataRetriever を使えば、指定の時間の画像を取得できそうだが、
試してみると先頭 / 先頭+1のフレームしか取れない。 http://developer.android.com/reference/android/media/MediaMetadataRetriever.html

 MediaMetadataRetriever mmr = new MediaMetadataRetriever();
mmr.setDataSource(getApplicationContext(), uri); int time = 1500; // 取得したい時間(ms)
 Bitmap bitmap = mmr.getFrameAtTime(time);
 //mmr.getFrameAtTime(time, MediaMetadataRetriever.OPTION_NEXT_SYNC); // 先頭の次のフレーム取得する
 //mmr.getFrameAtTime(time, MediaMetadataRetriever.OPTION_PREVIOUS_SYNC); // 先頭フレーム取得する
//mmr.getFrameAtTime(time, MediaMetadataRetriever.OPTION_CLOSEST_SYNC);
if(bitmap != null) {
 imageView.setImageBitmap(bitmap);
 } 

・VideoView / MediaPlayer のseekTo()で指定秒数に飛ばしてすぐにpause()すると、
映像が更新されない。
 // ボタン押したら、コマ送り
 button.setOnClickListener(new OnClickListener() {
 @Override
 public void onClick(View v) {
 int pos = mMediaPlayer.getCurrentPosition();
 // mMediaPlayer.start();       // 絵が更新されないので、再生してみる(→更新されない)
 mMediaPlayer.seekTo(pos + 150); // 150ms加算してコマ送り
 mMediaPlayer.start();       // 絵が更新されないので、再生してみる(→更新されない)
 videoView.invalidate();     // 強制的に描画(→更新されない)
 mMediaPlayer.pause();
 }
 } 

・MediaPlayer でシーク完了(setOnSeekCompleteListener)したときに処理しても、映像が更新されない
// ボタン押したら、コマ送り
 button.setOnClickListener(
new OnClickListener() {
 @Override
 public void onClick(View v) { 
int pos = mMediaPlayer.getCurrentPosition();
 mMediaPlayer.seekTo(pos + 150); // 150ms加算してコマ送り
 }
 }

 // button押下後、イベントはきている
mMediaPlayer.setOnSeekCompleteListener(new OnSeekCompleteListener() {
 @Override
 public void onSeekComplete(MediaPlayer mp) {
 if(isSeek) {
 int time = mp.getCurrentPosition();
 mp.start();
 mp.pause();
 }
 }
 });

 なぜなぜ分析してみる
 ・getFrameAtTime()で先頭フレームしか取得できないのはなぜ?
  パラメータの設定の仕方が悪いの? 

・pause中のseekTo()で画像が更新されないのは理解できるとして、
  pause -> start()したときに画像が更新されないのはなぜ?
 だれかヘルプm(__)m

 できたこと、わかったこと
・seekTo()とかgetFrameAtTime()使わずに、コマ送り(風)な処理はできました
 mMediaPlayer.start();  // 再生して、
try {
 Thread.sleep(33);      // 指定秒数スリープしたあとに、
 } catch (InterruptedException e) { }
mMediaPlayer.pause();        // 一時停止する

 ただこの方法だとコマ戻しができないのです。
コマ戻しするには秒数指定するしかないですよね。
困った。どうしましょう

2011年11月25日金曜日

[Android]LoadingImageView

画像をWeb上から取得してImageViewに表示する場合に、
ロード中が分かるようにしたくてViewを作ってみました。

ロード中...
ロード後


プロジェクト一式はGumroadから購入できます。


メインとなるビューです。
 
public class LoadingImageView extends RelativeLayout {

 private Context mContext;
 private ImageView mImageView;
 ProgressBar mProgressBar;
 
    public LoadingImageView(Context context, AttributeSet attrs) {
  super(context, attrs);
  
  this.mContext = context;
  
  LayoutParams layoutParams = new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT);
  setLayoutParams(layoutParams);
  
  this.mImageView = new ImageView(context);
  this.mImageView.setLayoutParams(layoutParams);
  this.mImageView.setScaleType(ScaleType.CENTER_CROP);
  
  layoutParams = new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
  layoutParams.addRule(CENTER_IN_PARENT);
  this.mProgressBar = new ProgressBar(context, null, android.R.attr.progressBarStyleLarge);
  this.mProgressBar.setLayoutParams(layoutParams);
//  this.mProgressBar.setVisibility(View.GONE);
  
  addView(this.mImageView);
  addView(this.mProgressBar);
 }
使い方は、 MainActivity.class

setContentView(R.layout.main);
loadingImageView = (LoadingImageView)findViewById(R.id.loadingImageView);
  
// Set ImageView default image
loadingImageView.init(R.drawable.init);

initはしてもしなくてもよいです。 ロード前の画像を設定したい場合のみ使います。
 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="wrap_content"
    android:layout_height="wrap_content"
 >
 <Button 
  android:id="@+id/button"
     android:layout_width="fill_parent"
     android:layout_height="wrap_content"
     android:text="load image"
     />
 <com.sample.android.LoadingImageView.LoadingImageView
  android:id="@+id/loadingImageView"
     android:layout_width="wrap_content"
     android:layout_height="wrap_content"
     />
</LinearLayout>
 
String imageUrl = "http:// ~~~.jpg";
loadingImageView.loadImage(imageUrl);
loadImage()にURLアドレスを渡すと画像を取得します。
取得完了したら、画像表示してプログレスバーを非表示にします。

2011年11月7日月曜日

日本Androidの会 中国支部 第23回勉強会に行ってきた

2011.11.05 に日本Androidの会 中国支部 第23回勉強会に参加してきました。

当日はあいにくの雨。

内容は、ICS と デザイン。

ICSはさまざまなニュース、記事が出ているので、割愛。

デザインは第1回ということで、色について基本的なところをお勉強。

ベース、メイン、アクセントの3つに分けましょう。が印象に。


今まで、
fragment からも デザインからも逃げてきたので、
そろそろ立ち向かわなければと感じた一日でした。

以上。




PS.
とても充実した内容だったのですが、
すべて書ききれないので、あえて簡素にしてみました。

どんな内容だったかは
cactusさんがまとめてるので、そちらを参照くださいませ。


http://ktake20jp.blogspot.com/2011/11/android-23.html
http://ktake20jp.blogspot.com/2011/11/android-23_06.html

幅480の画像を540x960に表示させる方法

480x60の画像を画面サイズが480x800の端末に表示させるときに、
<ImageView
android:width="480px
android:height="60px"
・・・・
としていたために起こった問題。

この状態で540x960に表示させると、画像が画面いっぱいに広がってくれないのです。
(当然ですが)

そこで、こんな感じにするときれいに幅いっぱいに表示されます。

<ImageView
android:layout_width="fill_parent"
android:layout_height="60px"
android:scaleType="centerCrop"
/>



heightをwrap_contentにすると、画像の上下に余白ができてしまったので、
縦は固定サイズにしないとダメみたいです。

というメモ。

Androidでフリック。に勝手に補足

GPソフトさんのWiki にトラックバックしたかったけど、
できそうになかったので勝手に補足してしまいます。

「Android でフリック」
http://gpsoft.dip.jp/hiki/?Android%A4%C7%A5%D5%A5%EA%A5%C3%A5%AF


画面いっぱいにフリックビューだけを表示させるのなら問題なかったのですが、
今回、下のような感じでフリックビューを表示させようとしたら、コンパイルエラーが出たので、勝手に補足。

===============
ヘッダー

===============


フリックビュー


===============
フッター
===============

<LinearLayout
    android:orientation="vertical"
    ・・・・
    >
    <LinearLayout
        android:id="@+id/layoutHeader"
        ・・・・
         />
    <FlingView
        android:id="@+id/flingView
        ・・・・
        />
    <LinearLayout
        android:id="@+id/layoutFooter"
        ・・・・
         />
/>

このレイアウトだと49行目でコンパイルエラー出ます。
      setLayoutParams(new FrameLayout.LayoutParams(PAGE_WIDTH * PAGES_NUM,

理由はFlingViewの上位のレイアウトがLinearLayoutだから。
という訳で以下のように変更したらよいです。
        setLayoutParams(new LinearLayout.LayoutParams(PAGE_WIDTH * PAGES_NUM,

RelativeLayout にした場合も同じように修正したら大丈夫なはず。

ちなみに、サンプルムービーの上と下の動作は、
23行目のフラグで変更できます。
    private boolean mIsFlingMode = false;



おしまい

Google使いこなしアレコレ

Googleのサービスどれだけ使っているかの棚卸し。
タイトルで言うほど使いこなしてるのかは微妙。

・Gmail
メインとサブの2つのアカウントを持ってます。
携帯(au)メール、サブGmailは受信したら、メインに転送するように設定。
メインのアカウントは、すべてのメールが集約されるようにしています。
その分受信数も多い。
ラベルで振り分けているので、大切なメールを見逃すことはないです。
重要とかは使ってないかも。(使っているけど、あまり見てない)
星も一色のみ。本当に大切なメールのみに使用。

・リーダー
情報収集はすべてリーダーに登録。
Androidからも見れます。
ニュースの確認やブログの更新チェックとか。

・サイト
チームの情報共有に使用。
個人でもAndroidのプロジェクト管理に使用。
ファイルキャビネットに同じファイル名でUploadすれば、バージョン管理できるます。
ただ、過去のコメントが見れないのが難点。

・カレンダー
埋まるほど予定がないので、そこまで使用していません。
祝日見たりとか程度でしょうか。

・ドキュメント
たまにしか使わない。
ドキュメント作成することが少ないので、そこまで使っていません。


・翻訳
ちょくちょく使っていますが、ほかの翻訳サイトと比較しながらといった感じ。

・Youtube
頻繁に。
TBSニュースとか。お気に入りは子供向けの動画で埋まってます。

・書籍
たまにですが、本買う前に見たりします。
本の中身が一部見れたりするので、本屋さんに行って確かめたりしなくてすみます。
便利。

・グループ
メーリングリストです。
チームで使ってましたが、最近使ってません。
情報共有とかに便利。

・Blogger
ここ。

・アラート
1日1回チェックしたいニュースとかで使ってます。
キーワードを入力すると、1日1通メール届くので、わざわざ調べなくてもいい。
リリースしたアプリ名をキーワードにしたりしてます。。

・地図
いつもお世話になっています。


まとめると、今はこんな感じで使ってます。
メールとリーダーとアラートで情報収集、
Bloggerで情報蓄積、
グループとサイトで情報共有、
サイトでファイル管理


Google以外のサービスでは、
情報収集していて気になったことはとりあえずTwitterをURLクリップ代わりに。
気になる記事、役立つ記事はEvernoteでWebクリップに。


参考までに。

2011年10月14日金曜日

テザリングとパケット制限

秋モデルでは各社さんともテザリング対応のスマートフォン出てきましたね。

auも10月からパケット制限が始まりました。

日中はISW11Tでテザリングしてるので、パケット制限に引っ掛かっている模様です。

パケット制限中の動作について、
感じたことを書いていきたいと思います。

まずはブラウザの閲覧。
⇒問題なし。
メールの送受信、ツイッターの閲覧など特に遅延など感じませんでした。

動画の閲覧
⇒問題あり。
Youtube、ustream、Gyaoともにバッファリングが間に合わなくて、
頻繁に途切れます。

auの場合、3日で300万パケット以上で制限されます。
テザリングしてるとすぐに越えてしまいますね。

300万パケット越えたら、すぐに遅くなる訳ではないようです。
当日含めず、直近3日なので、
1日で上限越えた場合。翌日から3日間制限される訳です。

そうは言っても、どれだけパケット使ってるか分からない。という方にお勧めアプリをご紹介します。

「auお客様サポート」アプリ
サポートIDを設定してログインすると、パケット利用量の概算見ることができます。
直近3日間のパケット総計や日毎のパケットなど。

「ZDbox」アプリ
設定切替、タスク管理、キャッシュ整理などとても便利なアプリです。
機能の中に通信量情報という機能があり、パケット量の当月、当日、総計を確認できます。
このアプリのすごいところはアプリごとの通信量を確認できる点。
おすすめです。

ここからは、
3Gパケットを使わないようにするためのお勧めアプリをご紹介します。

「au Wi-Fi接続ツール」アプリ
au Wi-Fi SPOTに自動で接続してくれるアプリです。
出来るだけ3G使わないようにして、
テザリング使っても制限かからないようにする目的で普段から設定しておくといいかも。外出時や街中で有効です。

Wi-Fi SPOT接続中にテザリングすると、Wi-Fiが切断されて3Gに切り替わるので、注意です。

アプリではないですが、
WiMAX対応機種はWiMAX使うのがベストですね。
WiMAXは制限の対象外です。
うちの場合はWi-Fiより速度早かったという測定結果も。。

ただし、エリア内で窓際でないと厳しいですが。

おしまい

追記
内容が主観的ですね。
制限中の測定結果のせたりすれば、よかったかも。

2011年9月20日火曜日

[Android]カメラアプリをリリースしました

カメラアプリをリリースしました。

Gesture Camera(ジェスチャーカメラ)

ジェスチャーカメラはシンプルなカメラです。
画面の切り替えなしにさまざまな設定をジェスチャー操作で切り替えます。
[縦フリック]
ズーム
コントラスト
フォーカス
フラッシュ
[横フリック]
シーン
エフェクト
ホワイトバランス

[Android Market]
https://market.android.com/details?id=com.blogspot.gettingsignals.android.GestureCamera&feature=search_result



左上の○が縦フリック、
右上の○が横フリックに対応しています。

変更したいボタンをタッチして、フリック。


縦フリックでズームイン、横フリックでセピアを設定した状態です。




撮影した写真は右下に表示されます。(3つまで)
保存先はMENUから切り替えられます。

写真(サムネイル)をタッチすると、メニューが表示されます。


その他機能として、
画面タッチするとアイコン(ボタン)とかが消えます。

端末が対応してない機能はボタンが非表示になっています。
私の端末ではシーン撮影できないので、表示されてません。


カメラ機能は端末ごとに違いが多いので、
いろんな端末で試さないといけないのですが、実機用意できないので、
いろんな端末で使ってもらってフィードバックもらえると嬉しいです。

2011年9月13日火曜日

[Android]ジェスチャー操作を検知するメモ

Androidでジェスチャー操作を検知する方法です。

GestureDetectorを使います。

シングル/ロングタップ、フリック、スクロールなどを検知できる。

onTouchEventを実装していた場合、
GestureDetectorにイベントを渡してあげないと検知できない。
true返却しないと、ジェスチャー検知できない。


  @Override
  public boolean onTouchEvent(MotionEvent event) {
      boolean b = mDetector.onTouchEvent(event);
          return true;
  }


GestureListenerはこんな感じ。
  public class GestureListener extends SimpleOnGestureListener implements OnGestureListener {
  @Override
  public boolean onDoubleTap(MotionEvent e) {
  super.onDoubleTap(e);
  }
 
  @Override
  public void onLongPress(MotionEvent e) {
  super.onLongPress(e);
  }
 
  }

ほかにもonScroll、onFlingとかある。

以上、メモおわり。

[Android]サービス起動メモ

Androidでサービスを起動する方法は2つ。

1.bindService()
2.startService()

1はアクティビティと接続した状態でサービスを起動する。
アクティビティがサービスを制御できる。
アクティビティ終了時にサービスも終了する。

2はアクティビティとサービスが別々に動作する。
アクティビティはサービスを制御できない。
アクティビティ終了後もサービスは生きている。

それぞれ終了する方法は、
1.unbindService()
2.stopService()

サービスとアクティビティでやり取りする方法は、intent-filter使ったりする。
ほかにも方法ある。

以上、メモ終わり。

2011年8月24日水曜日

AndroidのSQLite高速化

旅宿アプリで使っているDBの登録処理が長かったので、
SQLiteの高速化処理について調べてみました。

高速化の方法はTransaction処理を明示的に行うこと。
今回は複数行を1行ずつDBに登録していました。

トランザクション処理を記述する前は、
400行のデータの登録するのに40秒かかっていました。

トランザクション処理を記述後は、5秒で完了しました。

ソースはこんな感じです。

               try {

        database.beginTransaction();  // ①
   
    for(Data data : list) {
    // DBに登録
    database.insert(data);  // ②
    }
           database.setTransactionSuccessful();    // ③
    } finally {
    database.endTransaction();  // ④
    }

①・・・トランザクションを開始
②・・・DBに挿入
③・・・コミット
④・・・トランザクション終了



参照元
http://www.atmarkit.co.jp/fsmart/articles/android06/android06_2.html

2011年8月13日土曜日

AIDMA noteを改善するの巻 - その2 -

前回は、MENUのアイコンを変えてみました。
AIDMA noteを改善するの巻 - その1 -

before


after

そうは言ってもまだまだダサいです。
何がいけないんでしょう?

そうです、
画面背景が黒で、文字色が白という初期状態のまんまなのです。

という訳で画像を用意して、背景に設定します。

設定する方法は、
画面のlayoutにandroid:background="@drawable/background"のように設定するだけ。




修正前よりはよくなったかな。

AIDMA noteを改善するの巻 - その1 -

こんにちは。

Androidの勉強を始めて、早5ヶ月。

リリースしたアプリは、4つ。


第一弾:AIDMA note

第二弾:ScreenLockGesture

第三弾:ヤッテミッション

第四弾:旅宿(たびやど)

こう並べてみると、AIDMA noteがとても残念なデザインです。。

トップ画面と登録画面のたった2画面ですが、残念なところ満載なので、改善していきます。

その1:MENUのアイコンがダサい。

アイコンは自分で用意しないといけないと思っていたので、
センスのないアイコンを自作して表示させてしまっている。


赤い四角で囲んでいる部分です。
res/drawableに自分で作成した画像を登録、参照しています。

ここをAndroid標準のアイコン画像に変えて、統一感を出したいと思います。

方法1.
sdkフォルダ配下のplatforms/android-xx/data/resからアイコンを探してきて、
res/drawableを差し替える。


方法2.
Android標準のアイコンを直接参照する。
1.res/drawableのアイコンが入らないので、削除します。
2.setIconで指定する方法を以下のようにします。
setIcon(R.drawable.disk)
setIcon(R.drawable.mail)
setIcon(R.drawable.clear)


setIcon(android.R.drawable.ic_menu_save)
setIcon(android.R.drawable.ic_menu_send)
setIcon(android.R.drawable.ic_menu_close_clear_cancel)


修正後はこんな感じです。

メインの画面がイケテないので、アレですが、MENU部分はマシになりました。

android.R.drawable.xxxxxで指定できるアイコンは、
sdkフォルダ配下のplatforms/android-xx/data/resにあるので、そちらを参照してみてください。

この方法を使うと、
アプリのサイズが小さくなるので、特に理由がない場合は使った方が良いですよ。


自分でアイコンを作成する場合は、
ガイドラインがあるのでそちらを参照すると、恥ずかしい思いはしなくて済むのかも。


追記:

> android.R.drawable.xxxxxで指定できるアイコンは、
> sdkフォルダ配下のplatforms/android-xx/data/resにあるので、そちらを参照してみてください。
android.R.drawable.xxxxxの指定方法は端末 / バージョンによって異なるので、非推奨とのこと。
sdkフォルダ配下のplatforms/android-xx/data/resを使う場合は、コピーして使ってください。

2011年8月6日土曜日

「旅宿(たびやど)」をリリースしました。

楽天トラベルのアプリコンテスト用にAndroidアプリを作りました。

[楽天トラベルスマートフォンコンテスト 2011]

エントリー期間は7/31までだったけど、ぎりぎりエントリー完了。
結果発表は11月末までとあと3ヶ月あるので忘れよう。。


アプリはこんな感じです。
・キーワード検索
・エリア検索
・履歴・お気に入り表示
・スポット検索
・ホテル比較表示


トップメニュー

キーワード検索

エリア検索

スポット検索

日本の世界遺産一覧

ホテルの詳細(基本情報)


ホテルの詳細(詳細情報)

ホテルの詳細(レビュー)

ホテルの一覧

一覧の並び替え

ホテルの比較


作っている途中で気が付いたけど、
API使って動かすのがおもしろくて、テーマに沿っていないんでないかと・・・。

テーマ「日本を元気にする面白いアプリ」


とりあえず、いまできる精一杯の作品です。2,3週間でよく頑張った、自分。
アプリの感想・要望はコメントに残して頂けると嬉しいです。

2011年7月11日月曜日

ヤッテミッションをリリースしました!

一ヶ月ぶりの更新です。すみません。

ここ最近何をしていたかというと、
Catus Apps.さんと一緒に「Evernote デベロッパー コンペティション」に応募する作品を作ってました。

で、作った作品がコレ!

Androidアプリ「ヤッテミッション(The Mission)」。
※詳しくは、Cactus Apps.さんのブログを見てね。→http://cactusapps.blogspot.com/2011/07/blog-post.html


「普段やらないけど、
簡単にできるミッションに挑戦して、新しい発見ができたらいいよね」
がコンセプトのアプリです。

最近マンネリ気味な人、
なんだか自信をなくしてる人、
アイデアに困った人、
ちょっとした刺激が欲しい人、
今のあなたをちょっとだけ成長させてくれるかも?


ご意見・ご感想はCactus Apps.さん、または、コメント残していただけると嬉しいです。

2011年6月18日土曜日

日本Androidの会 中国支部21回勉強会にて

先週に引き続き、今週も勉強会に参加してきました。
今週は日本Androidの会 中国支部の勉強会です。

午前中はとある役員会に参加してて、遅刻。。
理由は、↓

とりあえず、セッションには間に合った。

スケジュールは、こちら

セッション1.Honeycomb(はにかん)でみよう!
講師:中国支部 重村さん

Honeycombとは何?というお話し。

タブレット対応のAndroidOS。
バージョンは、3.1。
コードネームは、Honeycomb(蜂の巣)

Androidのコードネームは代々A→B→C→・・・→Hの順番で、お菓子の名前ついてる。
(蜂の巣ケーキっていうのがあるらしい)

スマートフォントとタブレットの違い
・解像度が違う
Nexsus S (480 x 800)
  XOOM (1280 x 800)

・デザインが違う
ホーム画面におけるアイコンとか
ハードキーないのがある(HOME、BACKとか)
新しいUI(ステータスバー、アクションバー)

・新しいAPI
Fragment
Actionbar
Drug&Drop
System Clipbord

・Fragmentって?
今まで(2.3以前)は、1画面 = Activityで、画面はIntentで切り替える
Honeycombは、   1画面 = Activity + some Fragment
    →Windowsアプリの2ペインとか3ペインの画面が作れる

・実装時の注意
エミューレーター動作もっさり
Fragmentのライフサイクルを意識しないといけない

・まとめ
HoneyCombに対応すべきか?
→結構コストかかる(実装が大変)
→タブレットそんなに普及してないし・・・
→3.XのOSソースが公開されてないので、API仕様変わるかも?
→2.3と3.0の差分に注意


Fragmentはここ参照したら、もっと理解できるかも。
ソフトウェア技術ドキュメントを勝手に翻訳 1.1 フラグメント


セッション2.「ビジネス」としての「Android」 Google I/Oから見えてきた未来
講師:有限会社シーリス 有山さん

Androidで生活していくのは、大変だよの話し。

開発したアプリ
・薬検索
・Escape from the KAIGI
・LDNReader


今日のキーワード
・「自分」で学ぶ
→すべて自分で学ばないといけない

・「スペシャル」になる
→その業界を語るときに、名前が挙がるようになる

・「ルール」を作る
→スペシャルになるためのルールを作る
→他人が理解できる、分かりやすいルール

GoogleやAppleはルールつくりがうまい。
他人(↑)のルールに乗っかるのもあり。

アプリ開発だけ、講演だけ、執筆だけだと厳しい

優位性につながる「差別化」
→自分の作ったルールの賛同者を増やす
→ルールを作ってスペシャルになる

その他大勢になってしまわない


セッション3.2011年夏モデル タッチ&トライ + Androidのバッテリ駆動時間改善について
講師:シャープさん

最新機種に触れたよ
こまめに節電しようねの話し
・タッチ&トライ
NTTドコモ、au、ソフトバンクのシャープ携帯を触ってみた
SH-12C、006SH、IS12SH、007SH、IS11SH、SH-13C、INFOBAR A01

→INFOBARはやっぱりおしゃれだ。
HOME画面、縦スクロール、ウィジェット?のレイアウトとかいい!


・sh developers square
https://sh-dev.sharp.co.jp/android/

SHの拡張APIについて
APIは、
赤外線・LEDフラッシュライト、サブカメラ、開閉通知、ファイルピッカー、歩数計、赤外線リモコン

2011夏モデル以降に以下のAPIを公開予定
2眼カメラ、3Dライブ壁紙、ワンセグ予約Intent、画面キャプチャ抑止Intent、公開フォント、QHD Logical Density

・QHD Logical Density
QHD=hdpiの解像度
→レイアウト崩れることがある。
対策として、minSDK=4にする
support-screenを指定している場合、largescreenをtrueにする
android:weightを指定する

・Androidのバッテリー駆動時間
電池持ちに影響するアプリを発見するツール
Battery Impact Checker


・よく消費する原因
1.4GHzのCPU(1.2GHzよりも)
バックライト点灯(画面が広いとその分だけ)
3G/Wifi
タッチパネルに触れる
定期処理頻度が高い

→対策
ネットワーク設定を適正に(使わないときはOFF)
タッチパネルにタッチしたままにしない
定期処理頻度を下げる
画面をこまめに消す
明るさを低照度にする(自動調光しない)


LT①.AndroidでLuaスクリプトを動かす
講師:熊野さん

・Luaとは、
スクリプト言語
処理高速
C言語で作られてる
C言語に組み込みしやすい
ゲーム、アプリで使われてる

・Androidで動かす?
Android端末上でプログラム書いて動かしたかった
(普通はPCでコンパイルしてインストールしない。
開発の効率化できる??)

・まとめ
デバッグが不便
いろいろ大変

LT②.Android大喜利
講師:かけなびさん

省略

セッション5.Widows Phone 7とは
講師:松浦さん

Android開発環境とWindowsPhone環境の比較

UI修正作るところは、簡単に変更できる。
スターウォーズ風のTwitterアプリとか


メモの転記なので、読みにくいですね。
あくまで、自分用メモなので、ご了承を。

2011年6月15日水曜日

Qualcomm「QCAR」のImageTargetsの表示画像を変えてみる

前回からの続き

Qualcomm「QCAR」のImageTargetsの認識画像を変えてみる


の終わりに次は表示画像(ティーポッド)変えてみると言ってしまったので、続きです。。

さて、変更できるのかな?


変更するのはjni側のファイルです。(ImageTargets/jni)
ファイル名見ていくと、そのまんま”Teapot.h”というファイルがあります。

ファイルの中身はこんな感じ
#define NUM_TEAPOT_OBJECT_VERTEX 824
#define NUM_TEAPOT_OBJECT_INDEX 1024 * 3

static const float teapotVertices[NUM_TEAPOT_OBJECT_VERTEX * 3] =
{
    11.222200, 0.110300, 20.030291,  10.302300, -4.461498, 20.030291,  10.152300,・・・・
};

static const float teapotTexCoords[NUM_TEAPOT_OBJECT_VERTEX * 2] =
{
    0.608828, 0.354913,  0.609037, 0.414650,  0.627128, 0.412296,  0.626946, 0.353747,・・・・
};

static const float teapotNormals[NUM_TEAPOT_OBJECT_VERTEX * 3] =
{
    -0.964496, 0.067011, -0.255454,  -0.865037, 0.431362, -0.256198,  -0.914727, 0.312709,・・・・
};

static const unsigned short teapotIndices[NUM_TEAPOT_OBJECT_INDEX] =
{
    0,1,2, 2,3,0, 4,5,6, 6,7,4, 8,9,10, 10,11,8, 11,10,12, 12,13,11, 1,14,15, ・・・・
};


このファイル”Teapot.h”は、”ImageTargets.cpp”の中で参照されてオブジェクトを生成・表示してます。


今回は、MultiTargetのオブジェクト(皿とスプーン)に変えてみようとしました。
そこで、”Teapot.h”の中身(座標)をMultiTargets/jni/Cube.hに書き換えてみました。

では、実行してみましょう。


あれっ?変わらない・・・。

画像がおかしいのかな。と思い、
ImageTargets/assets/TextureTeapotBrass.png と TextureTeapotBlue.pngを差し替えて、再度実行。


なんかへんなのできた・・・。

形はティーポットで色はお皿のに。

というわけで心折れ、断念しました。ごめんなさい。


分かったこと
・座標は別のところで管理されている?
・OpenGLでオブジェクトは変えることができる(手順などが見つからないけど)
・3Dの知識がないまま進めると大変だった
・ARは楽しい!



何か分かったら更新します。と、一応書いておこう。

2011年6月12日日曜日

第7回中国GTUG勉強会@広島にて

今日は中国GTUGの勉強会に初参加。
自分の知らない技術・テクニックなど知ることができて、
とても有意義な時間を過ごす事ができた。


内容はの前に雰囲気から。
とっても和気藹々とした感じ。
もっと年齢層が高いのかと思ってましたが、30代前半くらい。
(学生さんもいらっしゃってたので、そう思ったのかも??)


内容は、

Google等インターネット無料サービスのイベント活用
~平成23年度まちづくり市民交流フェスタ公式サイト 作成事例報告~
講師:たかたさん


広がらないAndroidの世界
講師:かけなびさん

Google アナリティクスの紹介
講師:松原さん

FusionTablesを使ってみよう
講師:
佐藤さん

Google App Engine for Go入門(1)
横山 隆司(中国GTUG マネージャ)


その中でも興味深かったのは、


広がらないAndroidの世界
講師:かけなびさん

→AndroidOSがリリースされて2年半経つが、
 組み込み系の製品がドッカーンと来てないのはナゼか?というお話し。
 要はGoogleさんにもメーカーさんにもメリットがないから。
  ・Googleさんは収入モデルにならない。
  ・メーカーさんは既存のノウハウがあるので、乗り換える必要性がない。
 という訳でなかなか普及しないのでは。ということでした。

 ノウハウ持たない新興企業にとってはチャンスでもあるとも。

 という話しを聞いてニュース見たら、こんな記事が。


 今年のGoogle I/Oで組み込み家電もけっこう展示されていたようですね。
 

あともうひとつ。
Google アナリティクスの紹介
講師:松原さん


タイトルから、Webのアナリティクスの話しだと思ってたけど、
「Android × アナリティクス」の話しでした。
サプライズ!

Activityやイベントの情報を収集して、
アプリがどんな風に使われているか分かるみたい。
コードも簡単だったので、試してみようかなと思います。

第7回中国GTUGのページにPDF添付されてるので、ご参照を。



ほかのセッションも改めて再認識でき、参加してよかったです。

講師の方々、運営の方々ありがとございました。

2011年6月2日木曜日

Google +1buttonを使ってみた

最近、Googleに追加された新機能「+1Button」を使ってみました。

現段階では、日本語は対応してないみたい。

なので、
English版(google.com)からアクセスする必要があります。

はい、では手順です。
1.↓にアクセスします。(ログインしてね)
http://www.google.com/experimental/

2.「+1 button」を有効にします。
  設定はこれだけ。

3.後は、google.comから検索します。

見出し、タイトルの横に+1ボタンが表示されてます。
ポチっと押すと色変わります。

4.ポチっと押したサイトはプロフィールから確認できます。


Google.co.jp(日本版)では、まだ対応されてないので、ボタン表示されません。。

+1ボタン押されると、ページランクに影響があるみたいですね。

よいサイトはポチっと押すようにしたいです。
(サイト内からポチっとできたらいいな。Extensionできそうだな)

2011年5月15日日曜日

au by KDDI 2011夏モデル発表

で、5/17はauの2011夏モデル発表です。

そして、
リーク情報が流れていましたので、まとめてみました。


NTTドコモ2011夏モデル発表

明日(5/16)は、
NTTドコモさんの2011夏モデルの発表です。

が、すでにリーク情報が流れていました。。

という訳で情報をまとめてみました。(スマートフォンのみ)



正式に発表されたら、随時情報更新していきます。

2011年5月12日木曜日

Qualcomm「QCAR」のImageTargetsの認識画像を変えてみる

前回のエントリからの続きです。
Getting Signals: Android NDK環境構築
Getting Signals: Qualcom「QCAR」のサンプル実行


サンプル実行することができたので、
今回はサンプルの”ImageTargets”の認識画像を変えることに挑戦してみました。

デフォルトでは、以下の2つの画像を認識します。

stones

chips












これを下の画像に変更します。



認識画像を変更するには、
まず認識画像の特徴点(Trackable)を抽出する必要があります。

特徴点(Trackable)はQualcommのQDevNetで取得することができます。

手順は、
1.QDevNetにアクセスします。
  →http://developer.qualcomm.com/dev/augmented-reality

2.「My Trackables」をクリック

3.ログインしていない場合、ダイアログ表示されます
※登録無料です。事前に登録しておきます。


4.「New Project」をクリックします


5.”Project Name”を入力し、「Save」をクリックします

6.「Create a trackable」をクリックします


7.各項目を入力して、「Create Trackable」をクリックします
Trackable Name:任意
Select Trackable Type:作成するタイプに応じて選択。
※今回は、平面なのでSingle Imageを選択
Trackable Screen Size:オブジェクトを表示する画面サイズ
※認識画像のサイズではないですが、縦横比は合わせる必要あり。


8.「Upload」をクリックすると、ダイアログ表示されるので、
認識させる画像(JPG or PNG)を選択します。
※今回使用した画像は、1500x1050サイズです。


9.「Done」をクリックすると、特徴点を表示した結果が表示されます
※今回使った画像は、★3ですね。
★2や1の場合は、画像を変えた方がいいです。
※画像の縦横比が手順7で指定した範囲内でなければ、エラーでます。
画像加工(サイズ変更)してアップし直しましょう。


10.プロジェクトのトップまで戻ります。


11.作成した特徴点データにチェックをして、”download selected trackables”をクリックします。
ダイアログが表示されるので、”Standard Android Project”にチェックを入れ、「Next」をクリックします。


12.ファイルがzip形式でダウンロードされます。
zipファイル内には、”config.xml”と”qcar-resources.dat”があります

13.zipファイルを解凍し、2つのファイルをプロジェクトの”assets”フォルダに格納します。


14.格納後、Androidプロジェクトの”ImageTargets”をリビルド(クリーン→ビルド)します。
※エラー(R.javaが見つからない)が出た場合、リフレッシュするとよいです


以上です

それでは、実際に動作させてみましょう。
こんな感じ。

config.xmlのTrackingのsizeの値を変えると、
表示される画像サイズも変わります。

        <ImageTarget name="Bamboo" size="247 173"/>
     ↓
        <ImageTarget name="Bamboo" size="1235 865"/>
ちっちゃい


次は、表示させる画像(オブジェクト)を別のものにしてみようと思います。