aNdClip ver3.3.1リリース

本日、aNdClip ver3.3.1、aNdClip Free ver3.3.1をリリースしました。

■更新内容

・インポートとエクスポート処理の修正
・定型文の並び替え処理のバグ修正

インポートとエクスポートの処理について

・一部の機種で、デフォルトの保存パスが書込権限が無い
・Android6.x以降で、連携アプリを使用したインポート処理が上手くいかないケースある

上記を踏まえて、インポートとエクスポート処理を修正しました。

1. デフォルトの保存パスの変更
旧:【内部ストレージ】/aNdClip/history.base64(aNdClip.bin)
新:【内部ストレージ】/Android/data/com.amazing_create.android.andclip/files/history.base64(aNdClip.bin)
※なお、インポート・エクスポート時に、「標準パス」ボタンを押下すると、上記のパスが強制的に指定されます。

2. アプリ連携の廃止
インポートファイル選択時に、「OI File Manager」などのアプリと連携を行っていましたが廃止いたしました。

とにかくバックアップデータをインポートしたい場合

1. ver3.3.1をインストール
2. ファイラー系のアプリで、「history.base64」と「aNdClip.bin」を、内部ストレージの以下のパスにコピー
「/Android/data/com.amazing_create.android.andclip/files/」
3. 各タブで、インポートを実行し、その際に「標準パス」ボタンを押下

バックアップデータについて

aNdClipでのバックアップデータは、
クリップボード履歴用(history.base64)と定型文データ(aNdClip.bin)の二種類があります。

それぞれのタブを開いた状態で、メニューからエクスポート及びインポートして頂くことで
それぞれのデータがエクスポート/インポートされます。

aNdClip ver3.2.3リリース【Android3.0以上】

本日、Android3.0以上用のaNdClip ver3.2.3、aNdClip Free ver3.2.3をリリースしました。

■更新内容

・Android OS 4.3への暫定的な対応

Android 4.3のバグ(と個人的には思っている)である、「バックグラウンドでのクリップボード監視処理をするとエラーが発生する」という現象を暫定的に回避するようにしました。
Android 4.3以外には影響が出ないように修正しています。

技術的には、OnPrimaryClipChangedListenerの利用を止めて、3秒間隔でクリップボードの中身が変わっていないかどうか確認する、という手法を取っています。
一応半日程度使ってみて、さほどバッテリーに影響がない事・DeepSleepに入る事は確認出来たのでリリースしました。

この回避方法はAndroid OS側に修正が入った段階で解除するつもりです。

Android 4.3 でコピーするとエラーが発生する現象について

java.lang.IllegalStateException: beginBroadcast() called while already in a broadcast

Android4.3対応中に検出された上記のエラーについてですが、簡素な検証コードでもエラーが発生してしまいました。
バックグラウンドでクリップボードの監視をしていると落ちてしまいます。

まとめますと、aNdClip固有の問題ではなく、バックグラウンドでクリップボードを監視する機能を使用すると当現象が発生する状態、と認識しています。

OS側に修正が入らない限り、OnPrimaryClipChangedListenerを利用したクリップボードの監視を止めるしかないかもしれません。
方法としてはAndroid2.3以前の時のように定期的にポーリングするとかがありますが、今さら戻るなんて…。

今のところAndroid OS側のアップデートで修正されるものと考えています。
ですので大変申し訳ありませんが、OS4.3は一旦非対応となります。
2013/08/01 10:00追記
と考えていましたが、OSアップデートを待っていられないので、暫定対応として定期的にポーリングする方式(Android OS2.3以下と同様)に修正したバージョンを近いうちにリリース致します。

Google先生、これは仕様ではなくてバグですよね?

2013/08/07 00:00追記
Issue登録されてました。

2013/08/29 00:00追記
Nexus7(2013)はJSS15Qで修正されたようです。
シレっと直されると対応に困るのですがね…。

—————-
以下、検証の内容です。

■検証ソース
アプリを起動した後、戻るボタンでは無くホームキー押下などで他のアプリを開いて、コピーを実行するとコピーを実行したアプリ側で先頭のエラー(java.lang.IllegalStateException)が発生します。

■Activityのソース抜粋

public class MainActivity extends Activity implements OnPrimaryClipChangedListener {

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);

		ClipboardManager cm = (ClipboardManager)getSystemService(CLIPBOARD_SERVICE);
		cm.addPrimaryClipChangedListener(this);
	}

	@Override
	protected void onDestroy() {
		super.onDestroy();

		ClipboardManager cm = (ClipboardManager)getSystemService(CLIPBOARD_SERVICE);
		cm.removePrimaryClipChangedListener(this);
	}

	@Override
	public void onPrimaryClipChanged() {
		Toast.makeText(this, "onPrimaryClipChanged", Toast.LENGTH_SHORT).show();
	}
}

単純に、クリップボードの監視をさせているだけのコードになります。
これだけでもエラーが発生してしまうので、アプリ側からは打つ手が見つかりません…。

Android 4.3対応中…

Android 4.3の機種で、クリップボードに値をセットしようとすると以下のようなエラーが出ているのを確認しています。
現時点で分かっている発生条件としては、

・クリップボードの値を変更する際に下記のエラーが発生する
・一度エラーが起きると、当該アプリをアンインストールしても再起動するまでコピーする度にエラーが発生する
・クリップボードの変更をフックするアプリが2つ以上ある場合?

Exception:
java.lang.IllegalStateException: beginBroadcast() called while already in a broadcast
  at android.os.RemoteCallbackList.beginBroadcast(RemoteCallbackList.java:229)
  at com.android.server.ClipboardService.setPrimaryClip(ClipboardService.java:165)
  at android.content.IClipboard$Stub.onTransact(IClipboard.java:62)
  at com.android.server.ClipboardService.onTransact(ClipboardService.java:123)
  at android.os.Binder.execTransact(Binder.java:388)
  at dalvik.system.NativeStart.run(Native Method)
FATAL EXCEPTION: main
java.lang.IllegalStateException: beginBroadcast() called while already in a broadcast
  at android.os.Parcel.readException(Parcel.java:1439)
  at android.os.Parcel.readException(Parcel.java:1385)
  at android.content.IClipboard$Stub$Proxy.setPrimaryClip(IClipboard.java:171)
  at android.content.ClipboardManager.setPrimaryClip(ClipboardManager.java:125)
  at com.amazing_create.android.andcliplib.common.g.a(Unknown Source)
  at com.amazing_create.android.andcliplib.fragments.av.a(Unknown Source)
  at com.amazing_create.android.andcliplib.fragments.j.onItemClick(Unknown Source)
  at android.widget.AdapterView.performItemClick(AdapterView.java:298)

とりあえずAndroidのソースを落として追ってみる事にします…。

aNdClip ver3.2.1 リリース【Android3.0以上】

本日、Android3.0以上用のaNdClip ver3.2.1、aNdClip Free ver3.2.1をリリースしました。

■更新内容

・クリップボード履歴の有効期限機能を追加

■クリップボード履歴の有効期限機能について

以前よりユーザさまから要望のあったセキュリティ強化機能になります。

設定 => クリップボード履歴タブ => 有効期限

上記のメニューから履歴データの有効期限を「無期限 ※デフォルト」「10分」「1時間」「1日」「1週間」から選択出来ます。
「無期限」以外を選択した場合は、履歴データの最終更新日時と現在時刻を比較し有効期限切れのデータは自動的に消去されます。

一週間以内にau Marketにも同バージョンの更新申請をする予定です。

aNdClip ver3.2.0 リリース【Android3.0以上】

本日、Android3.0以上用のaNdClip ver3.2.0、aNdClip Free ver3.2.0をリリースしました。

■更新内容
・バッテリー残量表示の通知アイコンの色を選択可能にした(有料版のみ)
※「設定」=>「エクストラオプション」=>「通知アイコンの色」
・通知アイコンが暗くならないように修正
・Web検索時に強制終了していた現象を修正(有料版のみ)
・検索結果画面の文字色を修正
・複数選択で鍵付きデータをコピー予約した場合に設定によらず履歴に登録されてしまう現象を修正
・メモリ消費量の低減化

一週間以内にau Marketにも同バージョンの更新申請をする予定です。

aNdClip ver2.3.0 リリース【Android3.0未満】

本日、Android3.0未満用のaNdClip ver2.3.0、aNdClip Free ver2.3.0をリリースしました。

■更新内容
・クリップボード履歴の更新時刻表示
・クリップボード履歴の履歴のインポート/エクスポート機能追加 (Android2.2以上)
・編集画面での置換機能搭載
・メモリ消費量の低減化
・その他バグ修正

一週間以内にau Marketにも同バージョンの更新申請をする予定です。

aNdClip ver3.1.0 リリース【Android3.0以上】

本日、Android3.0以上用のaNdClip ver3.1.0、aNdClip Free ver3.1.0をリリースしました。
今回は機能追加多めです。

———-
更新内容
———-
○機能追加
・クリップボードの履歴のインポート/エクスポート
・編集画面での置換機能追加
・更新時刻表示
・複数選択時のテキスト結合機能
・クリップボード履歴の保存最大数を1000件に変更
○バグ修正
・端末回転時の画面情報を保存するように
・アプリタブの使用時のメモリ使用量低減
・多数の細かいバグ修正&リファクタリング
———-

以下、詳細
続きを読む

aNdClip ver2.2.0 リリース【Android3.0未満】

本日、Android3.0未満用のaNdClip ver2.2.0、aNdClip Free ver2.2.0をリリースしました。

■更新内容
・定型文のインポート/エクスポート処理でファイルを選択可能に
・メニューにキーボードショートカットを設定
・軽微なバグ修正

auスマートパス用の「aNdClip for au」も現在アップデート申請中です。
審査には二週間程度かかるようです。
■追記(2012/09/29 00:00) 更新を確認しました

aNdClip ver3.0.3 リリース【Android3.0以上】

本日、Android3.0以上用のaNdClip ver3.0.3、aNdClip Free ver3.0.3をリリースしました。

■更新内容
・定型文の並び替え処理を実装(※実装を忘れていました)
・定型文のインポート/エクスポート処理でファイルを選択可能に
・複数選択時に全選択ボタン追加
・メニューにキーボードショートカットを設定

auスマートパス用の「aNdClip for au」も近いうちに更新致します。
■追記(2012/09/15 00:00) アップデート申請をしました。審査には二週間程度かかるようです。
■追記(2012/09/29 00:00) 更新を確認しました