Entries

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
この記事にトラックバックする(FC2ブログユーザー)
http://garlicg.blog92.fc2.com/tb.php/22-1fbe0b49

トラックバック

コメント

コメントの投稿

コメントの投稿
管理者にだけ表示を許可する

開発日記①

12月にアプリ公開してから今更開発日記①かよという感じなのですが、寄り道を繰り返しながらも当初から目標にしていた機能が残すところあと一つとなりました。長かったじぇ・・・
といってもアンドロイダーさんにアプリ紹介をして頂いたのをきっかけにユーザー様から数多くの意見要望が押し寄せてくるようになったので、それらの改善はもちろん行っていく予定です。

さて、最後に残ってしまった機能は・・・電話帳のリンク機能です。GalaxyやらXperiaのデフォルト電話帳にはついてるんですけど、他機種はわかりません。
動作を見る限りContact-RawContactsのAggregationの制御→リンク機能 なんじゃないかなぁと思います。

個人的に電話帳開発2.1以降で一番やっかいなのがContact - RawContactの概念でした。あとデータ取得周り。電話帳周りに関してはCursor先生がなかなか使えないやつ。私がアホなだけかもしれないので説明はしまへん。
とりあえずリンク機能を実装するにあたりAggregation周りを翻訳したのでメモ的に公開します。今週中には実装したいなぁと企み中。

以下リファレンス翻訳

ContactsContract.AggregationExceptions

Class Overview

Constants for the contact aggregation exceptions table, which contains aggregation rules overriding those used by automatic aggregation. This type only supports query and update. Neither insert nor delete are supported.

集約コンタクト例外の為の定数値テーブル。これは自動集約をオーバーライドした集約ルールが含まれる。

このタイプはクエリと更新のみサポートしている。挿入と削除はサポートされていない。

public static final int TYPE_AUTOMATIC

Since: API Level 5

Allows the provider to automatically decide whether the specified raw contacts should be included in the same aggregate contact or not.

プロバイダは、指定されたコンタクトと同じ集約にするか否かを自動的に決定することを許可する。

Constant Value: 0 (0x00000000)

public static final int TYPE_KEEP_SEPARATE

Since: API Level 5

Makes sure that the specified raw contacts are NOT included in the same aggregate contact.

指定されたRawコンタクトと同じ集約に含まれていないことを確かめる。

Constant Value: 2 (0x00000002)

public static final int TYPE_KEEP_TOGETHER

Since: API Level 5

Makes sure that the specified raw contacts are included in the same aggregate contact.

指定されたRawコンタクトが同じ集約に含まれていることを確かめる。

Constant Value: 1 (0x00000001)

ContactsContract.RawContacts

Aggregation

As soon as a raw contact is inserted or whenever its constituent data changes, the provider will check if the raw contact matches other existing raw contacts and if so will aggregate it with those. The aggregation is reflected in the ContactsContract.RawContacts table by the change of the CONTACT_ID field, which is the reference to the aggregate contact.

Rawコンタクトが挿入されるか、またはデータが変更されると、プロバイダーはすぐにRawコンタクトが他の既存のRawコンタクトとマッチしているか、それと集約すべきかをチェックする。集約はCONTACT_IDフィールドの変更によってContactsContract.RawContactsテーブルに反映される。CONTACT_IDは集約コンタクトを参照する。

Changes to the structured name, organization, phone number, email address, or nickname trigger a re-aggregation.

名前、組織、電話番号、Eメールアドレス、ニックネームの変更は再集約のトリガーになる。

See also ContactsContract.AggregationExceptions for a mechanism to control aggregation programmatically.

これもみてね。

RawContacts

int

AGGREGATION_MODE

read/write

A mechanism that allows programmatic control of the aggregation process. The allowed values are AGGREGATION_MODE_DEFAULT, AGGREGATION_MODE_DISABLED and AGGREGATION_MODE_SUSPENDED. See also ContactsContract.AggregationExceptions.

集約プロセスをプログラム制御可能にするメカニズム。定数値はご覧のとおり。

public static final int AGGREGATION_MODE_DEFAULT

Since: API Level 5

Aggregation mode: aggregate immediately after insert or update operation(s) are complete.

集約モード:挿入か更新の操作が完了した後、すぐに集約する。

Constant Value: 0 (0x00000000)

public static final int AGGREGATION_MODE_DISABLED

Since: API Level 5

Aggregation mode: never aggregate this raw contact. The raw contact will not have a corresponding Contacts aggregate and therefore will not be included in Contacts query results.

集約モード:決してこのRawコンタクトは集約しない。Rawコンタクトは集約コンタクトにならないのでコンタクトのクエリ結果には含まれない。

For example, this mode can be used for a raw contact that is marked for deletion while waiting for the deletion to occur on the server side.

例えば、このモードは、サーバー側が削除処理の発生を待っている間に、削除対象としてマークされるRawコンタクトを使用することができる。

See Also

AGGREGATION_MODE_SUSPENDED

Constant Value: 3 (0x00000003)

public static final int AGGREGATION_MODE_IMMEDIATE

Since: API Level 5

This constant is deprecated.

Aggregation is synchronous, this historic value is a no-op

Aggregation mode: aggregate at the time the raw contact is inserted/updated.

非推奨の定数値。Rawコンタクトが挿入/更新された時に集約する。

Constant Value: 1 (0x00000001)

public static final int AGGREGATION_MODE_SUSPENDED

Since: API Level 5

Aggregation mode: aggregation suspended temporarily, and is likely to be resumed later. Changes to the raw contact will update the associated aggregate contact but will not result in any change in how the contact is aggregated. Similar to AGGREGATION_MODE_DISABLED, but maintains a link to the corresponding Contacts aggregate.

集約モード:集約は一時中断し、再開する可能性がある。Rawコンタクトを変更したときに、コンタクトは関連している集約コンタクトをアップデートする、しかしコンタクトが集約される方法は変更にならない。AGGREGATION_MODE_DISABLEに似ているが、対応する集約コンタクトへのリンクを維持する。

This can be used to postpone aggregation until after a series of updates, for better performance and/or user experience.

これはユーザー体験のパフォーマ数を向上させるために、一連の更新の後まで集約を延期することができる。

Note that changing AGGREGATION_MODE from AGGREGATION_MODE_SUSPENDED to AGGREGATION_MODE_DEFAULT does not trigger an aggregation pass, but any subsequent change to the raw contact's data will.

AGGREGATION_MODEをSUSPENDからDEFAULTにしたとき、集約パスのトリガーがにならないので注意してください。しかし、Rawコンタクトのデータの変更はされる。

Constant Value: 2 (0x00000002)

この記事にトラックバックする(FC2ブログユーザー)
http://garlicg.blog92.fc2.com/tb.php/22-1fbe0b49

トラックバック

コメント

コメントの投稿

コメントの投稿
管理者にだけ表示を許可する

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。