投稿

ラベル(Tips)が付いた投稿を表示しています

Bintray のパッケージをマージしてみた

イメージ
Mavenアーティファクトのリネーム 思うところあって、とあるライブラリのバージョンアップ時に Maven のアーティファクト名を変更することにした。 すると当然だが Bintray の管理画面がこうなる。 実質同じなので古いほうが邪魔だ。消したい。

Java のライブラリを JCenter で公開する手順まとめ

イメージ
はじめに Android Studio から Android プロジェクトのビルドも Gradle で実行されるようになりました。 Gradle では Maven リポジトリで配信されているライブラリが非常に簡単に使えるので、自作のライブラリを JCenter や Maven Central で公開する効果はこれまで以上に高くなっていると思います。 そこで最近、Github で公開している Java のライブラリを JCenter で公開してみたので、その手順をまとめました。 下記の2ページ参考にしています。 GradleでBintrayにアップロードする手順 How to distribute your own Android library through jCenter and Maven Central from Android Studio 前提 Gradle でビルドできる Java プロジェクトであること。 やりたいこと Gradle でライブラリのアップロードをすること アップロードしたライブラリには署名がされていること 上記が可能な build.gradle を Github にそのまま置けること 自分だけが Bintray へのアップロードをできること 自分以外もビルドはできること

Android の SharedPreferences データはオンメモリで保持されている

SharedPreferences 関連の不具合を調べていてAOSP のコードを見ていたら、 SharedPreferences の挙動について気づいたので Tips としてメモしておきます。 SharedPrefereces に保存した設定値は読み捨てでOK Androidアプリで設定等の小さいデータを保存するのに使用する SharedPreferences ですが、Android Framework 内では SharedPreferencesImpl   というクラスで実装されています。 SharedPreferencesImpl (Android 5.0.1) http://tools.oesf.biz/android-5.0.1_r1.0/xref/frameworks/base/core/java/android/app/SharedPreferencesImpl.java このクラスではコンストラクタでXMLファイルからデータを読み込み、 Map<String, Object>   で SharedPreferences の中身のデータを保持し続けています。 try { stat = Os.stat(mFile.getPath()); if (mFile.canRead()) { BufferedInputStream str = null; try { str = new BufferedInputStream( new FileInputStream(mFile), 16*1024); map = XmlUtils.readMapXml(str); } catch (XmlPullParserException e) { Log.w(TAG, "getSharedPreferences", e); } catch (FileNotFoundException e) { Log.w(TAG, "getSharedPreferences", e); ...

Universal Windows の GridView で特定のアイテムを選択不可にする方法

イメージ
WP8 の LongListMultiSelector で特定のアイテムを選択不可にする方法 の続き(?)です。 Universal Windows アプリへの移植 Universal Windows アプリケーション では、Phone アプリも Windows Runtime API (いわゆるMetro、Modern)アプリ用の API を使って実装します。そのため、今まで Phone アプリを開発していて Universal に移植する場合には多くのコントロールを置き換える必要があり、 LongListSelector や Toolkit の LongListMultiSelector を使用していた場合もこれに当てはまります。 前回と同じくやりたいことは、 「ViewModel の特定にプロパティの変化に応じて、既に表示済みであっても動的に GridViewItem の選択可不可が変わること」 です。 試したこと まず、試して効果がなかった方法を挙げておきます。 ViewModel に IsEnabled プロパティを追加する ItemContainerStyle で、GridViewItem の IsEnabled プロパティに IsSelectable をバインドする ItemContainerStyleSelector で、IsSelectable に応じて別のStyleを適用する 最初に気づきましたが、アイテムが選択できるかどうかは ItemContainer (GridViewItem) の IsEnabled でも制御できるようです。なので、上記の方法は IsEnabled にどのように ViewModel のプロパティをバインドするか、という観点で行っています。 ※ WP8 のときに LongListMultiSelector の中にまで手を加えたのはやり過ぎだったのかもしれません。今更ですが。 1番目の方法ですが、GridViewItem の IsEnabled は ViewModel の IsEnabled をバインドしていないので効果がありません。 2番目の方法ですが、XAMLで下記のような実装をしました。 <GridView.ItemContainerStyle> ...

WP8 の LongListMultiSelector で特定のアイテムを選択不可にする方法

イメージ
標準の Photos アプリで、複数コンテンツ選択モードに入った時の動画コンテンツのこの状態。 LongListMultiSelector を使っているようにしか見えないのだが、内部で使用されているLongListMultiSelectorItem には IsSelectionEnabled が true になった時に State.Closed (非選択モード)のままキープしてくれるようなプロパティは存在しない様子。 標準アプリなのに Toolkit カスタマイズして使ってるのか・・・ ということで、仕方がないので LongListMultiSelectorItem に IsSelectable プロパティを追加 セットされた DataContext に bool型の IsSelectable プロパティがあった場合にはそれを読み込む IsSelectable == false の場合には、State.Closed以外には遷移させない という修正を、 Toolkit に入れました 。 継承で乗り切ろうかと思いましたが、private と internal が多すぎて断念です。 それっぽく動いているように見えます。 終わり。

NATループバックではまった

NATループバックではまったのでメモ。 環境 プロバイダ: OCN ルータ: Aterm WG1800HP サーバ: NUC DC3217IYE / Ubuntu 14.04 / Apache2 作業内容 サーバ構築 LAN内からのアクセス確認 ドメイン登録 ルータのポートマッピングで80番ポート開放 アクセス出来ない でも外部のポートチェックツールによると80番は開いているらしい  サーバをDMZに配置 アクセス出来ない・・・ でも外部のポートチェックツールによると80番は開いているらしい なんとなくモバイル回線からアクセスしてみたらできた ヘアピンNATルータとは? 調べてみたらこういうことらしいですが、家庭用機種でNATループバックに対応している機種はほとんどないですね。 ヤマハルータの寄付をお待ちしております。

Windows 8から8.1にアップデート時に入れなおしたもの

10月17日の夜から Windows Store で Windows 8.1 へのアップデートが配信開始されました。 アップデート自体は特に問題ありませんでしたが、いくつかドライバが死んで再インストールが必要になったので残しておきます。 と言ってもそんなに数はありませんが。 VMwareのネットワークドライバ 8.1にアップデート後、 Adapter settings の VMware Network Adapter VMnet が不正な状態に陥りました。 当然、仮想マシン内からの通信は通りません。 一旦VMwareを削除後、現在最新の VMware-player-6.0.0-1295980 を再インストールしたら解決しました。 Hyper-Vを使用している人は関係ないかと思いますが、私は Hyper-V を無効化して VMware を使用していたので踏んでしまいました。 Data RAMのRAM Diskドライバ 8.1へのアップデート後、まず RAM Disk がマウントされなくなりました。 一旦削除し再インストールしたところマウントはされるようになりましたが、 明らかに挙動が異常で Windows の起動に2時間もかかる状態に陥りました。 今まで安定して使用できていた v3.5.130 R24 に見切りをつけ、最新の v4.3.0 RC1 に入れ替えたところ、正常な挙動に戻ってくれました。 きっとダメになるだろうと思っていたサウンド系が正常だったのが意外です。 ああ、それにしてもスタートボタンほんと要らない・・・ 終わり。

C#でJSON配列のパースに苦労した話

JSONの記法では、Arrayの中に様々な型を含めることができます。 たとえば、 {"result":["str1", "str2", "str3"], "id":1} {"result":[1, 2, 3, 4], "id":1} {"result":[{"key":"val"}, {"key":"val2"}], "id":1} のような単純な配列形式であれば、 C#では次のような簡単な処理でオブジェクトへとデシリアライズできます。 C# [DataContract] class StringArray { [DataMember] public int id { get; set; } [DataMember] public string[] result { get; set; } } private void deserialize() { var json = "{\"result\":[\"str1\", \"str2\", \"str3\"], \"id\":1}"; var stream = new MemoryStream(Encoding.Unicode.GetBytes(json)); var serializer = new DataContractJsonSerializer(typeof(StringArray)); var obj = (StringArray)serializer.ReadObject(stream); Debug.WriteLine("id: " + obj.id); foreach(var str in obj.result) { Debug.WriteLine("result: ...

BuilderパターンのコードをEclipseフォーマッタにかけても見やすくする方法

イメージ
Builderパターン コンストラクタに大量の引数をセットする代わりに初期値セットするためだけのクラスを用意してそいつにインスタンス生成させる方法です。 便利なのですが、これを使って書いたコードをEclipseでフォーマッタにかけると改行位置がひどくて頭を抱えたくなります。 StringBuilderを使って適当に書いたコードです。意味はまったく無いです。 見づらくて耐えられなかったので少し考えたところ、無理やり改行させる方法があったようです。 それだけです。 おわり。

SO-02EのNFCが動かない → 直った

SO-02Eの動作をひと通り確認していたのですが、NFCがさっぱり動きませんでした。 Edy反応しない Pasmo反応しない Android Beam反応しない(自分も相手[Galaxy Nexus/Butterfly]も) Lumia 920相手にも反応しない もう見るからにNFCが有効化されてないような症状です。 え、AX/VLに続けてまた製品不具合なの・・・と不安に思いながらも色々試したのですが、なんとか正常に動くようになってくれました。 以下、私が行ったNFC有効化の手順です。 設定 → その他 → NFC/おサイフ設定 → Reader/Writer, P2Pをチェック NFC/おサイフ ロックをタップ 適当なパスワードで一旦ロックをかける NFC/おサイフロックをタップ 先ほどのパスワードでロックを解除 終わり。 これをやる前まではいくら試しても何に対しても反応しなかったのですが、少なくとも最初に挙げたものに対しては全て正常動作するようになりました。 2台で試しましたが、どちらもこれで正常になりました。 初回NFC使用時にロック状態のチェックをして、設定が存在しなかった場合の処理が空回りしてるんでしょうか。 想像でしかないのでよく分かりませんが、これくらいは出荷前の試験で見つけておいて欲しいものです。。。

応援学割2013

イメージ
今年もdocomoの応援学割が開始されました。   応援学割2013 | 料金・割引 | NTTドコモ 割引内容は 去年 と大差ないですね。 Xiパケ・ホーダイ ライトが追加されたくらいのようです。 今年も一応注意事項を読んでおきましょう 「Xiスマホ割」「ありがとう10年 Xiスマホ割」「キッズ割」ご契約中の場合、「応援学割2013」のお申込みと同時に廃止となり、残りの割引期間は破棄されます。 まあ、より適用期間の長い学割で基本料金が無料になるので意味が無くなりますし、特に問題ないですね。 続いて、 ご注意事項のページです   応援学割2013 : ご注意事項 | 料金・割引 | NTTドコモ 対象となる利用者1人につき1回線お申込みいただけます。 これは毎年同じです。 「応援学割2012」をお申込みいただいたご契約回線は、「応援学割2013」をお申込みいただけません。 なるほど、 縛りは 回線 ですか。と言うことは別の回線なら同一人物でも適用可能ですね 。 Webページの表記ミスで、「学生本人は人物縛り、学生の家族は回線縛り」です。(2013/2/9 修正) 「タイプシンプル学割」および「応援学割2011」ご契約中、または「タイプシンプル学割」および「応援学割2011」をお申込みいただいたご契約回線(現Xiご契約回線含む)は、「応援学割2013」の学生の申込対象であり割引適用条件を満たしているかつXi契約(FOMAからの契約変更と同時の場合を含む)に限り、「応援学割2013」を新たにお申込みいただけます。 2年前の学割適用回線は、2年縛りが切れるタイミングでまた学割適用対象回線になるようになったらしいです。 学生期間って小学生から大学院生まであるのでその間に逃げられないようにってことですね。 で、何度読み返しても「 ご契約回線 」という表現しか出てこないので、 学生がMNPでポートインした場合は今まで学割適用された事がある人でも、去年と別の回線を対象にすれば学割を受けることができるようです。 上と同じく、応援学割2012の適用対象学生は一旦解除しないと、応援学割2013の適用対象学生にはなれません (2013/2/9 修正) と言うことは、私は家族に学生がいるのでauまたは...

Lumia 920買った - LTE有効化と開発端末登録

イメージ
去年の年末にポチポチやっていたLumia 920が今週ついに届きました。 LTEバンド1に対応しているのでXiで使える端末です。   Detailed specifications for the Nokia Lumia 920 のはずなのですが、起動してmopera.netに接続してもH(HSPA)としか表示されません。 最大速度設定も2G/3Gしか選択肢がありません。(今もこの2つだけです。) LTEの有効化 少し調べたところ、こちらの記事で書かれている通り一度Field Testモードに入ればLTEが即有効になるようです。   遊軍的家: Lumia920(RM-821)でのXiの使用方法 最初はLTEのセルをまったく発見できていなかったのですが、1分くらい放置したら気がついたら掴んでました。ちなみに、ENSを有効にする必要はありません。 これで一応Xiが使えるようになりました。 ですが、かなり頻繁に圏外に落ちるので何かおかしい気はします。 3GへのFallbackに失敗しやすいのでしょうか。 Developer Registration 続いて端末のDevelopper Registrationを行います。 USBデバッグをOnにすればそれだけでADBが使えるAndroidとは違い、有料の開発者登録を行わなければWindows Phoneの実機デバッグをすることはできません。 しかも、開発者登録をしていてもそのアカウントで使用可能な端末は3台までです。 Windows 8発売直後の数日の間だけ開発者登録が90%OFFだったので、私はその際に登録しておきました。 ちなみに、Windows Phone 8 SDK及びエミュレータは無料なのでそこまでで良ければ無料でも開発可能ですが、エミュレータ起動に必須なHyper-Vを有効化してしまうとVMwareが使用できなくなってしまうので私はHyper-Vを切っています。 で、Developer registrationなのですが、Windows Phone 8 SDKをインストールする時に同時にインストールされる"Windows Phone Developer Registration"を使用します。 手順は、 Windows ...

microSIMアダプタをスロットに空刺ししてはいけない

イメージ
アダプタを片付けるのが面倒でうっかり空刺ししてしまい、 ちょっと冷や汗をかいたのでメモ。 docomoのmicro SIMとアダプタ。 壊れる原因はSIMとの接点になるこの6つのピン。 micro SIMをセットして刺したときは大抵問題ないけれど、 空刺しすると接点が下がらないためアダプタが引っかかって抜けなくなる。 ああ、壊れるってこういうことか・・・と思いながら爪楊枝を3本用意。 上から抑えてみた。 なんとか無事引き抜けた。 というわけで、非常に面倒なので空刺しはやめましょう。 このGalaxy Nexusの場合は端子が爪楊枝で抑えられる位置にあるからいいけども、 見えないところに差し込むタイプの端末だとこの方法ではどうしようもないし。

抜け道

docomoのサポートセンターに電話をかけた。 要件は 「応援学割2012(家族)を別の新規回線に付け替えられるかどうか」 回答をまとめると 応援学割の廃止を申し込むと当月末までは学割適用 別の新規回線への応援学割申請は来月以降でないとできない 応援学割2012の家族適用は新規申込と同時でないとできない つまり、今月中に学割(家族)を廃止して、 新規契約回線に学割(家族)を適用し直すことはできないらしい。 それでは Optimus LTEへのMNPで最安回線を入手 できないので非常に困る。  で、一旦電話を切ってdocomoのホームページをだらだらと眺めていたら FAQ: 応援学割2012適用中に対象外料金プランへの変更や... 応援学割2012は廃止となります。 という記述があった。 これと料金プランの「本日から変更」を組み合わせれば 即座に学割(家族)を強引に廃止できるような気がしたのでサポセンに再度電話。 要件を伝えると、調べるのに時間がかかるので折り返し電話をしてくるとのこと。 15分ほどしてかかってきた回答によると プラン変更(タイプシンプル→タイプSS etc.)をした場合、学割(家族)が即時解除される その場合もパケット定額料金の値引き(1050円)は月末まで適用 当月中の新規別回線への学割(家族)申請は可能 新規回線への学割はその契約当日から適用される(つまりパケ定の値引きはダブる?) 応援学割2012キャンペーン期間中、この条件が変更されることはない 完全に契約条件の抜け道です。本当にありがとうございました。 最後の項目については向こうから言われたわけではないけど、心配だったので一応確認をとっておいた。 これでやっと4月以降のdocomoの契約内容が決められる。 主回線: 無料通話分 0円   780(Xiにねん) + 315 + 5985(Xiパケフラ) - 105(eビリ) - (780 + 1050) - 3465 = 1680円 副回線: 無料通話分 2100円   1575(Sバリュー) + 315 + 2100(パケダブル2) - 4410 = 0円 ファミリー割引適用で副回線の無料通話分を主回線にシェアできる。 副回線を0...

スマートフォン持ち込みではプリモバ契約ができない

SoftBank Mobileのプリペイド式携帯の プリモバイル 。 契約の切れたSoftBankの3G端末をSoftBankショップに持ち込めば 端末購入することなく新規プリモバ契約ができるとのことだったので、 この寒い中意気揚々と Desire HD 001HT を持ち込んでみたのですが、 「スマートフォンの持ち込みではプリモバイル新規契約ができない」 とのこと。 調べてもらったことを羅列すると、 スマートフォンでは動作の保証ができないため「機器の登録」ができないので新規契約できない プリモバ用に売り出しているスマートフォン( X02T など)ならば新規契約もできる 前のプリモバ電話番号が生きている端末ではプリモバ新規契約はできない ということらしいです。 実際はプリモバSIMでも通話できるので、単純にサポートが面倒だからってのが理由ですかね。 そうそう、調べてもらったお礼に 740SC のホワイトを購入してきました。

NTT docomo 応援学割2012 の使い方

イメージ
NTT docomo 応援学割2012 2012年版の応援学割です。 学生とそのご家族向けの期間限定キャンペーン。 学生なら、はじめの6ヶ月間基本使用料0円から、その後も30ヶ月間基本使用料が390円からご利用いただけます。 学生のご家族も、新規契約なら「応援学割2012」にお申込みいただけます。 お申込み期間:2012年1月20日(金曜)~2012年5月31日(木曜) だそうです。 学生が家族にいるなら使わない手はないでしょう。 月々サポート有りの場合 月々サポートも恐らく有効なので、 毎月1755円以上の月々サポート対象端末なら7円運用できるはず。 計3318円 + 端末料金 新規契約手数料: 3150 電話料金(タイプXiにねん) 24ヶ月: 0*6 + 390*18 Xiパケホダブル 24ヶ月: (2100-1050)*24 SPモード 24ヶ月: 315*24 ユニバーサルサービス料金 24ヶ月: 7*24 月々サポート: 1755*24 月々サポート無しの場合 月々サポートがない場合はパケット定額を即解約。  計11703円 + 端末料金 新規契約手数料: 3150 電話料金(タイプXiにねん) 24ヶ月: 0*6+390*18 Xiパケホダブル 1ヶ月: 2100-1050 SPモード 1ヶ月: 315 ユニバーサルサービス料金 24ヶ月: 7*24 ちなみにGalaxy Nexus SC-04Dの月々サポートが1月16日から1785円に増額される模様。 店頭での一括購入価格の下落がとても楽しみ。 <<追記>>  ご注意事項 対象者1人につき1回線お申込みいただけます。 過去に「応援学割」「タイプシンプル学割」にお申込みいただいたご契約回線は、「応援学割2012」をお申込みいただけません。 過去に申し込んだ「契約回線」が縛りの対象なのか。 SBMは過去に申し込んだ「人」が縛りの対象だったからそれに比べると緩い? よくわからんけど。