« 2013年4月 | トップページ | 2013年6月 »

2013年5月

2013年5月24日 (金)

【Tizen】SDカード内のファイルにアクセスする

今回は、SDカードの中にファイルを作ったり、

中にあるファイルにアクセスする方法について説明します。


(1) config.xmlに、ファイルアクセス用のprivilegesを追加する

アプリからファイルアクセスを行う場合は、config.xmlにprivilegesを追加する必要があります。

(Androidアプリ開発経験者の方には、パーミッションのようなものと言うと解りやすいかもしれません。)

追加を忘れると、ファイルアクセス時にエラーとなります。

追加するprivilegesは、以下のとおりです。

  • ファイル読み込みを行う場合
    http://tizen.org/privilege/filesystem.read
  • ファイル書き込みを行う場合
    http://tizen.org/privilege/filesystem.write


(2) ファイルアクセスを行うAPIについて

ファイルアクセスを行うには、tizen.filesystem.resolveメソッドを使用します。

/* tizen.filesystem.resolve */
void resolve(
 DOMString location, // ファイルパスを指定する
 FileSuccessCallback onsuccess, // アクセス成功時に呼ばれるコールバック
 optional ErrorCallback onerror, // アクセス失敗時に呼ばれるコールバック
 optional FileMode mode) // アクセス権限。"r","rw","w","a"が指定可能 

第一引数"location"に、アクセス先のパスを記述します。

すなわち、SDカードにアクセスする際は、SDカードのパスを記述すれば良いのですが、

tizenでは、SDカードへの仮想パスが用意されています。

SDカードのルートディレクトリへの絶対パスと、仮想パスは以下のとおりです。

絶対パス仮想パス
/mnt/mmc removable1

では、さっそくresolveメソッドを使ってみましょう。

以下はresolveメソッドの使用例です。

SDカード内の特定のフォルダにアクセスしたい場合、

例えば"my documents"というフォルダに直接アクセスする場合は、

パスの指定を"removable1/my documents"とすればOKです。

上記ソースの5行目、コールバックメソッドにて渡される"dir"変数が、

SDカードのルートディレクトリを表すオブジェクトです。

このオブジェクトの型名及び主なプロパティは、以下のとおりです。

型名説明
FILE ファイルまたはディレクトリを表す。
プロパティ 説明
DOMString path ファイルのパス
DOMString name ファイルの名前
boolean isFile ファイルか否かを保持
boolean isDirectory フォルダか否かを保持
File createFile(DOMString relativeFilePath);
引数で指定された名前のファイルを作成する。
File createDirectory(DOMString dirPath);
引数で指定された名前のフォルダを作成する。
void listFiles(
FileArraySuccessCallback onsuccess,
  optional ErrorCallback onerror,
  optional FileFilter? filter);
配下にあるすべてのフォルダ及びディレクトリ一覧を取得する。


参考までに、SDカード直下に"yoshio"というフォルダを作るソースを載せてみました。

なお、エミュレータでSDカードにアクセスする場合は、

予め、エミュレータにSDカードをマウントしておく必要があります。

SDカードのマウント方法は、こちらをご覧ください。

 

2013年5月22日 (水)

【Tizen】エミュレータにSDカードをマウントし、使用可能にする

TizenでSDカードの中にあるファイル一覧を取得するアプリを作成しようと思い、

エミュレータを起動すると・・・、SDカードがマウントされていない!

しかもマウントの方法がよくわからず大ハマリ(;ω;)

やっとの思いで方法を見つけたので、今回も書き残しておきたいと思います。

【TizenのエミュレータにSDカードをマウントする方法について】

TizenのエミュレータにSDカードをマウントするには、"Event Injector"という

ツールを使用します。このツールは、コマンドプロンプトで使用する、androidでいうところの

emulator consoleみたいなものです。

このツールの使い方も含め、SDカードのマウント方法を順を追って記載していきます。

 

(1) エミュレータを起動する

    Event Injectorは、エミュレータを起動しないと使用できないので、

    まずはエミュレータを起動します。

 

(2) コマンドプロンプトを起動する

    Event Injectorの起動はコマンドプロンプトからです。コマンドプロンプトを起動してください。

 

(3) Event Injectorを起動する

    Eent Injectorを起動します。Event Injectorの格納場所は、

    "(tizen-sdkのroot)\tools\emulator\bin"フォルダです。

    まずはコマンドプロンプトにて、このフォルダまで移動してください。

    移動が面倒なら、環境変数にパスを追加しましょう。

例:C直下にtizen-sdkをインストールした際のフォルダ移動コマンドcd c:\tizen-sdk\tools\emulator\bin

 

移動が終わったら、下のように、"eventinjector"コマンドを打ってください。

eventinjector

すると、Event Injectorが起動します。

起動が成功すれば、以下のように"Start event injector"と表示されます。

evnetinjector

Start event injector..


>>

(4) "sdcard mount"コマンドを実行する

Event Injectorにて、"sdcard mount"コマンドを実行します。

コマンドは、以下のとおりです。

sdcard mount sdcard_4G.img

コマンド入力後、コマンドプロンプト上にOKと表示されればマウント成功です。

ちなみに、4Gのほか、8G、16G、32Gのsdcardもマウント可能です。

以上でSDカードのマウント作業は完了です。

これで、はれてエミュレータ上でSDカードを使用することができるようになりました。

ここまでやらないと、SDカードは使用できないようです。。。

せっかくなので、エミュレータのファイルエクスプローラーでSDカードを

確認してみましょう。

エミュレータ上のSDカードマウント先パスは、

"/mnt/mmc"です。

Blog11_2

ご覧のとおり、/mnt/mmcにマウントされ、フォルダが表示されていることが

わかります。

マウントをしていない状態だと、これらのフォルダは表示されません。


ここからは余談になりますが、

今回使用したEvent Injectorを使用すると、

エミュレータに電話をかけたり、

電池残量を変更したりすることが出来るようです。

今後もいろいろ試してみたいと思います。

それでは今回はこの辺で!

2013年5月15日 (水)

【Android】アプリから、ブラウザのブックマークのサムネイルを取得するプログラム

Androidの標準ブラウザでブックマーク一覧を表示すると、

以下のような画面が表示されます。

Blog10

この中に表示されているブックマークのサムネイルを、アプリから取得する方法について

調べたので、書き留めておきます。

 

まず、Androidのブックマークは、サムネイルに限らず、URLや訪問日時等の各データは、

データベースに登録されています。

そして、ContentProviderを使用することで、アプリのプログラム上からブックマークの

情報を読み出すことが出来ます。

ここでは、ContentProviderの細かな使用方法については省略します。

このデータベースのカラムは、android.provider.Browzer.BookmarkColumnsクラスに

定義されています。

リファレンスはこちらです。

 

しかし、このページを見ても、サムネイルに該当しそうなカラムは定義されていません。

実は、サムネイルのカラムは隠しAPIとなっているためです。

隠しAPIとはいえ、データベース上はサムネイルを保存したカラムが実際には

存在しているので、ContentProviderを用いて、直値でサムネイルのカラム名を

指定すれば読み出すことが出来ます。

サムネイルのカラム名は、"thumbnail"です。

下に、サンプルソースを書いておきます。

 

なお、既に記載したとおり、

サムネイルのカラム名は非公開となっております。

よって、Androidのバージョンアップによって、カラム名が変更される可能性も

十分に有ると言えます。

そのため、使用する前に、よく御検討ください。

2013年5月12日 (日)

【Tizen】別の画面を起動する

今回は、Tizenで別の画面を起動する方法について記載します。

早速ですが、下に掲載したソースは、

2つの画面を持ち、ボタンをクリックすることでページ移動を行うサンプルです。

このソースの中で、重要なポイントについて説明します。

①ページにidを付与する

ページにidを付与しましょう。

ソースの15行目で1ページ目の画面のidを、

24行目で1ページ目の画面のidを付与しています。

②aタグにてリンクを作成する

aタグのhref属性に、起動したいページのidを指定します。

指定する際は、<a href=#firstPage>のように、id名の先頭に#をつけてください。

重要なのは、この2点です。

これで、画面の遷移が可能となります。

下の画像は、起動時のものです。

Blog9

2013年5月 6日 (月)

【Tizen】Tizen Web UI Frameworkを使って画面を作成する ~画面構成について~

Tizenの"Web UI Framework"の使い方について調べてたことを、

ここに書き残しておきたいと思います。

Tizenでは、標準のhtmlでガリガリとソースを書くことも出来るようですが、

どうやらこの"Web UI Framework"を使用することが一般的なようです。

●Tizen Web UI Frameworkの画面構成について

Web UI Frameworkの画面は、ヘッダー、コンテント、フッターの3つの要素から

構成されます。図に表すと、以下のようになります。

Tizen_blog7_2


●画面の単位について

画面1つあたりを、pageという単位で表されます。

よって、複数の画面を持つアプリは、複数のpageを持つということになります。

Androidでいうところの、Activityに当たります。

Tizen_blog72_4

●ソースを記述する

実際に、画面を構成するソースを記述していきます。

まず、画面を構成する各要素のタグ名等について、表にまとめておきます。

要素名 タグ プロパティ
ヘッダー div data-role header
コンテント div  data-role content
フッター div data-role footer
ページ div data-role page

では、早速ソースを書いてみます。

ソースは、以下のようになります。

あとは、各要素のタグに、配置したいウィジェットを配置すれば

手軽に画面が作れます。

« 2013年4月 | トップページ | 2013年6月 »

購入


無料ブログはココログ