TizenでAndroidのpreference代替機能を探してみた


この記事はTizen Advent Calendar 2013 九日目の記事です。

どうもshintaniです。今回は、TizenでAndroidのpreferenceの代替機能
を探してみた時の話を記載します。

はじめに

preferenceとは、Androidアプリ開発時にアプリで使用するパラメータを
保存する目的で使用されるものです。このpreferenceの代替機能がないか
調べてみました。

結論としては、Registryクラスのメソッドを使用することで、preference
の代替とすることができました。

Registryクラスとは

Registryクラスとは、レジストリファイルを作成したり、レジストリファイルへの
入出力を行う機能を提供しています。(Windosのiniファイルのようなものを管理するクラスというイメージ)

主なメソッド

・Construct()
 レジストリファイルのオープン(ない場合は作成)

・AddSection()
 セクションの追加

・AddValue()
 セクションへの値の追加

・SetValue()
 セクションに設定した値の変更

・GetValue()
 セクションに保存した値の取得

ソースコードを書いてみた

Registryクラスを利用する場合は、下記の流れで処理を行います。

1. レジストリファイルを作成する

2. セクションを追加する

3. パラメータの読み書きを行う

Registryクラスを利用してソースコードを書いてみましたのでご紹介します。

下記の例では、LteCheckerPreference()にて、レジストリファイルをオープンし、
setUseNotification()でパラメータの保存、isUseNotification()にてパラメータの取得を行っています。

LteCheckerPreference::LteCheckerPreference(void)
: PREFERENCE_NAME(L"lte_checker")
,PREF_USE_NOTIFICATION(L"use_notification")
,prefPathName(L"BLM.ini")
,sectionName(L"setting")
{
	result r;
	
	 //①"BLM.ini"ファイルをオープン(なければ作成)
	 r = pref.Construct(App::GetInstance()->GetAppDataPath() + prefPathName, "a+");
	
	 //②"setting"という名前のセクションを追加
	 r = pref.AddSection(sectionName);
}

void
LteCheckerPreference::setUseNotification(int use){
	result r;
	
	//③"setting"セクションに、"use_notification"キー、値を設定
	r= pref.SetValue(sectionName, PREF_USE_NOTIFICATION, use);
	
	//"use_notification"キーに該当するキーがなければ
	if(r == E_KEY_NOT_FOUND) { 
		//④"setting"セクションに、"use_notification"キー、値を追加
		r = pref.AddValue(sectionName, PREF_USE_NOTIFICATION, use);
	}

	r = pref.Flush();
}

int
LteCheckerPreference::isUseNotification(void){
	result r;
	int use = 0;
	
	//⑤"setting"セクションの、"use_notification"キーに対応する値を取得
	r = pref.GetValue(sectionName, PREF_USE_NOTIFICATION, use);

	if(r == E_KEY_NOT_FOUND || r == E_DATA_NOT_FOUND ){
		use = 1;
		r = pref.AddValue(sectionName, PREF_USE_NOTIFICATION, use);
	}

	return use;
}

感想

他にも良い方法はあるかも知れませんが、Androidのpreferenceのようにパラメータの保存・取得を簡単に行う方法をご紹介しました。C++でイチから書くよりソースコード量が少なくすみますので、パラメータ保存・取得を簡単に行いたい方は、是非試してみてください。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <img localsrc="" alt="">