2011年4月21日木曜日

-webkit-user-select

From Evernote:

-webkit-user-select

iOSのmobilesafariで

<input id="hoge" type="text" size="10" />

でキーボードは表示されるが入力ができない問題があってすごくハマってた。

確認したら「css」で

* {
  -webkit-user-select: none;
}

この属性を「none」にすると
ユーザがエレメントを選択出来なくなってコピーとか出来ないようになるらしいが、
入力も出来なかった。

それでcssで

#hoge {
  -webkit-user-select: auto;
}

を追加して解決。

2011年4月14日木曜日

iPhoneとAndroidのURL Scheme起動設定方法

From Evernote:

iPhoneとAndroidのURL Scheme起動設定方法

iPhoneとAndroidのURL Scheme起動設定方法
ブラウザのリンクからアプリを起動する方法。
(及び他アプリからURL Schemeで起動する事も可能)


iPhone


<a href="babukuma:">アプリ起動</a>
のリンクで起動できる。パラメータを渡すのも可能。

<a href="babukuma:?a=1&b=2">アプリ起動</a>
<a href="babukuma://com.babukuma.demo.urlscheme/?a=1&b=2">アプリ起動</a>

起動時のデリゲート
iOS4.1までは
- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url
このデリゲートが呼ばれたが、
iOS4.2からは次のデリゲートが追加された。
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation

両方実装すると
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation
このデリゲートが優先される。

簡単な例は。。。
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation
{
    NSLog(@"url=%@, sourceApplication=%@", [url absoluteString], sourceApplication); 
    returnYES;
}



Android

AndroidManifest.xml


<a href="abukuma://com.babukuma.demo.urlscheme">アプリ起動</a>
リンクで起動できる。パラメータを渡すのも可能。


<a href="babukuma://com.babukuma.demo.urlscheme/?a=1&b=2">アプリ起動</a>

パラメータ以外もPath、Port指定も可能。




ブラウザからアプリを起動する為のHTMLサンプル

ブラウザからアプリを起動するのは簡単にできるか、
ユーザがアプリを先にインストールしないブラウザでエラーページが表示されてしまう。
アプリがインストールされている場合はアプリを起動し、
インストールされてない場合はダウンロード先へ移動させたい。

参照したサイトのURLは忘れたけど、どこか外国のiPhone開発QAサイトでヒントを見つけて一応解決。



2011年4月7日木曜日

Renderscript調査

From Evernote:

Renderscript調査

3D Rendering and Computation with Renderscript


Renderscriptとはローレベルの3Dレンダリングと演算処理を目的でAndroid3.0(Honeycomb)から追加された技術。
HoneycombのGoogle BooksとYoutubeアプリがRenderscriptを使ったらしい。(Youtubeの3Dギャラリーは確かに派手な感じできれいだ)

・ハードウェアアクセラレータ上で3Dレンダリングする簡単な描画API
・C99に似た言語(Cではない)
・クロスプラットフォーム



「babukuma.rs」ファイルをコンパイルすると
・「.bc」ファイル
    - 「<project_root>/res/raw/babukuma.bc」
    - プラットフォームに依存しない中間コード(bytecode)
    - Java側では「R.raw.babukuma」で参照する。
・Javaのclassファイル
    - 「<project_root>/gen/<package>/ScriptC_babukuma.java」
・「.d」ファイル
    - 「<project_root>/gen/<package>/babukuma.d」
    - このファイルについてはマニュアルに
三つのファイルが吹き出される。



その他の調査。。

「<android_sdk_root>/platform-tools/llvm-rs-cc」
    - Renderscript用LLVMコンパイラらしい

「<android_sdk_root>/platforms/android-11/renderscript/include」
    - Renderscript用ヘッダファイル「.rsh」が存在
    - ユーザが作る「.rs」ファイルでincludeして使用。

「<android_sdk_root>/platforms/android-11/renderscript/clang-include」
    - C言語のヘッダファイルが入っている。
    - ユーザが直接に使うことはないと思う。



RenderscriptがNDK(特にOpenGL処理)機能の一部を役割を代わりに使うことはできると思うが、NDK処理を全て対処することのできないと思う。
特に外部のライブラリ連携は難しそうなので。。(例えば Renderscript + OpenCVとか)
もうしできるんであれば誰か教えてほしいな。。