2012年11月11日日曜日

勉強への長い道のり

さて、購入した参考書はいまだカバンの肥やしとなっていて、ダンベル代わりとしてか機能していません(笑)

現在は、アプリのバージョンアップ作業に追われて(といってもその作業も思うように時間が取れないのですが)勉強をする時間も取れない状態です。

今改良している点は以下の3点です。

1.操作説明の追加

アプリの操作について判りづらいというご意見もよせられていますし、隠し機能的な物もあるのでアプリ起動時の画面に「ヘルプ」をメニューに追加しました。
出来るだけわかりやすく説明したつもりですが、リリース後にご意見をいただければ順次改善していきたいと思います。

2.タブの一括設定

間違えた問題にタグをつけて管理したい場合、現状ですと1問1問タグの設定が必要ですが採点後に間違った問題に一括してタグを設定できるようにしました。

3.検索機能の復活

当初は検索機能があったのですが、いつのころからか検索機能(メニューの検索です)が使えなくなっていました。従来(1.6の頃)は単純なコーディングで実現できていたのですが、Androidのバージョンアップ時に仕様が変わったようです。
今回、テストをしている中で検索が機能していないことを発見しました。(自分でも使っていなかったので発見が遅れてしまいました)
とりあえず、現状の仕様に合わせて検索できるようにしましたが、表示される検索ダイアログのデザインについていまひとつ満足しています。デザインはAndroid側で固定で決まっているようですが、Googleの検索ウイジットのようなデザインがよかったのですが、ちょっとちょっとのデザインとなっています。時間を見つけて今後改良していきたいと思います。

これと平行して、秋の試験問題の書き起こしを行っています。

あと1週間程でまずは第一弾として、「応用情報」「高度午前Ⅰ」「情報セキュリティ」をリリースしたいと思います。

残りは11月末までにはリリースしたいと思っています。いましばらくお待ちください。




検索機能については従来

onSearchRequested();

を呼び出すだけで実現できていましたが、以下のような修正をしないと動かなくなったようです。



1.以下のような「searchable.xml」を「res/xml」フォルダに作成します。これは検索時に表示されるダイアログについて指定しています。詳細はこちらを参照してください。

<searchable
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:label="@string/search_label"
  android:hint="@string/search_hint"
  android:imeOptions="actionSearch"
  android:searchMode="showSearchLabelAsBadge"
  android:inputType="text"
  android:voiceSearchMode="showVoiceSearchButton|launchRecognizer" >
 </searchable>



2.AndroidMmanifest.xmlの中で検索機能を持つActivityを以下のように修正します。

<activity android:name=".MyActivity" android:label="@string/app_name"
            android:launchMode="singleTop">
 <intent-filter>
    <action android:name="android.intent.action.SEARCH" />
  </intent-filter>
  <meta-data android:name="android.app.default_searchable"
  android:value=".MyActivity" />
  <meta-data android:name="android.app.searchable"
  android:resource="@xml/searchable"/>
</activity>

検索を呼び出すと検索ダイアログで入力された情報はmeta-data android:name="android.app.default_searchable"で指定されたActivityに引き渡されます。ここでandroid:launchMode="singleTop"の指定が無いと検索が呼び出されるつど新たなActivityが生成されてしまうのでsingleTopを指定する必要があります。
<intent-filter>は、その時のインテントを受け付ける為の指定です。また、meta-data android:name="android.app.searchable"で1.で作成したsearchable.xmlを指定しています。



3.onSearchRequested();を呼び出す。
今回はメニューから検索機能を呼び出しているのでメニューで検索が選択された時の処理としてonSearchRequested();を呼び出すようにしています。



4.検索ダイアログで入力された文字列を受け取って、インターネット検索を行う。

@Override
protected void onNewIntent(Intent intent) {
if (Intent.ACTION_SEARCH.equals(intent.getAction())) {
String query = intent.getStringExtra(SearchManager.QUERY);
    startWebSearch(query);
}
}

検索ダイアログに入力された検索用文字列はインテントandroid.intent.action.SEARCHとして送られてきます。通常はActivityのonCreateでインテントが引き渡されますが、singleTask の場合、はonNewIntentメソッドが呼び出されるので、ここで検索ダイアログで入力された文字列を取得して必要な処理を行います。

0 件のコメント:

コメントを投稿