Androidの通知アイコン
2.3から5.0までの端末で表示確認を行ってみました。
画像が多いので別ページで http://juggler.jp/tateisu/android/notification_looks/
Nexus 7 (2013)からの動画キャプチャ
ゲームの録画をしたくなったので動画キャプチャ環境を整えたなど。最初はChromecastの出力をHDMIスプリッターに繋いだけど、やはり帯域の問題で、Chromecast に出力した時点で画質が結構劣化してた。有線のHDMI出力アダプターの方が明らかに鮮明だった。
録画サンプルと機器の詳細をメモしておくよ
録画サンプル
(A) N7 2013 → Chromecast → HDMI スプリッタ → HDMI キャプチャ
http://juggler.jp/game-prru/video/capture-via-chromecast.mp4
機器の詳細
SlimPort 用 HDMI 出力アダプタ
microUSBから映像を出力する規格はMHLとSlimPortがあり、GalaxyやXperia系はMHL、Nexus系はSlimPort らしい。それぞれ異なる出力アダプタが必要になる。
http://www.amazon.co.jp/gp/product/B00I1C6RZ6 Nexus対応 SlimPort to HDMI 変換アダプタ 【Nexus7(2013動作確認済】 〔添付品 : HDMI ケーブル・充電用ケーブル〕
Vodaview Slimport to HDMI 変換アダプタ 添付品:HDMIケーブル・充電用ケーブル
- 出版社/メーカー: Vodaview
- 発売日: 2017/09/25
- メディア: Personal Computers
- この商品を含むブログ (1件) を見る
メーカーのVodaviewがAmazon経由で販売しているもの。充電用USBケーブルとHDMIケーブル付きで2789円だった。画面の縦横は自動的に処理される。Full HD を縦画面でそのまま…というモードはないみたい
HDMI スプリッター
HDCP 周りの問題を解決するためにHDMIスプリッターを挟む。
http://www.amazon.co.jp/gp/product/B003U0M3BQ LEICKE KanaaN 1入力2出力 対応HDMI 分配器 スプリッター Y-アダプタ 1080p FullHD1.3b 2-port/ 1 to 2
KanaaN HDMIスプリッター 1入力2出力 4k対応 Y-アダプタ 2160p Full UHD/ HD 1.4b 2-fach / 2-port
- 出版社/メーカー: LEICKE ライケ
- メディア: エレクトロニクス
- この商品を含むブログを見る
SPD Japan出品の純正品。HDMIケーブル1本+ACアダプタ付きで2599円だった。バスパワー動作は出来なかった。
HDMI キャプチャデバイス
HDMI 信号の画像と音声をPCにキャプチャする機器。まあ何でも良いと思うんだけど、今回使ったのはコレ
http://www.amazon.co.jp/gp/product/B00MIQ40JQ Elgato(エルガト)Elgato Game Capture HD60 (日本語ソフトウェア/正規輸入品)
- 出版社/メーカー: Elgato
- 発売日: 2014/08/23
- メディア: Personal Computers
- この商品を含むブログ (2件) を見る
メーカーのElgatoがAmazon経由で販売しているもの。18590円だった。1080p/60fps 対応、HDMI パススルー出力あり。キャプチャ時のエンコード品質は標準(14Mbps,6.4GB/時)から最高(40Mbps,18.1GB/時)まで調節可能。
irc.juggler.jpの2ch@IRC脱退について
http://irc.juggler.jp/ の告知の詳細です。
2014年4月に Jim が irc.2ch.net をDNSから消しちゃった件について、2014年9月に Jim と色々交渉した結果、彼のネットワークポリシーだと irc.juggler.jp が再度 2ch@IRC とリレーできる可能性はほとんどないという結論に至りました。よって irc.juggler.jp は 2ch@IRC から脱退して、独立したIRCサーバとなります。ユーザの皆様にはご不便をおかけします。
2ch@IRCの現状
- irc.2ch.net : 2ch@IRCの新1鯖。Jimが9月6日に建てた。彼のネットワークポリシーにより、外部とのリレーはほぼ不可能
- irc.2ch.sc : 2ch@IRCの旧1鯖。3月ごろまでは irc.2ch.netの名前でアクセス可能だった
- irc.nurs.or.jp : 2ch@IRCの旧2鯖。3月ごろまでは irc2.2ch.netの名前でアクセス可能だった
- irc.juggler.jp : 2ch@IRCの旧3鯖だった。(脱退済)
上記4つがリレーせずに存在して、ユーザが分散しているのが現在の状態です。
時系列
今回の流れを時系列順に書くとこうなります
- 4月ごろ:irc.2ch.netおよびirc2.2ch.netがDNSから消える。ただしサーバは稼働しており、旧1鯖はIPアドレス指定で、旧2鯖は IPアドレス指定および irc.nurs.or.jp の名前でアクセス可能。
- (時期不明) 旧1鯖に irc.2ch.sc の名前でアクセスできるようになる。ただしWebサービスは停止した
- 6月30日: irc.nurs.or.jp が メンテナンスに入る。この時点でサーバ間リレーは機能しなくなった。
- 9月4日:irc.juggler.jp が 2ch.net の現管理者の Jim と交渉を開始。
- 9月5日:irc.juggler.jp は 2ch@IRC から脱退を表明。
- 9月6日:Jimは彼のirc.2ch.netを新しく建てた
- 9月6日:irc.nurs.or.jp がメンテナンスから復旧
2ch@IRCの今後の展開
irc.2ch.net に Jim が Web IRC を設置するのは時間の問題でしょう。そうなると「板からリンクされてゼロインストールで使えるチャット」という2ch@IRCの本来の機能は復活することになります。
ただし長期的には、西村 vs Jimの 裁判によりDNSの所有権が移動して、irc.2ch.sc が irc.2ch.net として復活する可能性がかなりあります。
irc.juggler.jp の現状
irc.juggler.jp は irc.2ch.net にも irc.2ch.sc にも肩入れしないという選択をとりました。Jimが建てた irc.2ch.net とリレーできる可能性がない状態で 2ch@IRC を名乗り続けるのも、irc.2ch.sc とのリレーが長期間存在しない状態で 2ch@IRC を名乗り続けるのも、適切ではないと感じたからです。
2ch@IRCの既存ユーザの受け入れ先について
2ch@IRCの既存のユーザの大半は現時点では irc.juggler.jp に接続していますが、ユーザがどう動くのかは私にはわかりません。
irc.juggler.jp から外部サーバへの誘導告知を積極的に行える状態にはなっていないと思います。主に受け入れ側の態勢が整っていないという認識です。お家騒動が解決して、受け入れ準備ができた状態でならirc.juggler.jp はサービスを閉じても構わないと思います。もし irc.juggler.jp 独自のユーザ層ができていればまた話は別ですが。
個人的な感想
4月からの 2ch@IRC のDNSトラブルによるユーザ数の減少がどれだけ食い止められるか、というのが私の視点です。Jimが裁判に勝っても負けても、その後に 2ch@IRC のユーザがどの程度残るのかが重要でした。irc.2ch.netとそのWeb導線が生きているのなら、それを誰が運営しているかはどうでもよいと思います。
結果的に私自身と 2ch@IRC との関係がなくなるというオチになりましたが、別段それで誰が困るということもないでしょう。
irc.juggler.jp の今後については、 2ch@IRC の末端という立場ではなくなった故に可能になることもいくつかありますが、どちらかというといつまでもIRCだとモバイルとの相性が悪くてどうしようもないので、そこをなんとかしたいです。
Android アプリの間違った作り方 の続き
ずっと前に「Android アプリの間違った作り方」という記事を書いたけど、
見なおしてみると色々アレだったので、今ならこうするというのを書いておく
Activity の初期化と終了処理
Activityはバックグラウンド状態になったり画面を回転させたりすると一時的に破棄/復元される事がある。プロセスごと一時的に破棄される場合もあるので、例えばstatic変数に状態を保存しても復元の際にそれが維持されているとは限らない。初期化処理と終了処理を書く際に破棄と復元を考慮するには以下のような工夫が必要になる。
onCreate(), onNewIntent(), onSaveInstanceState(), onRestoreInstanceState()
あるActivityが作成された時に、それが最初に作られたのか、一時的に破棄された後に復元されたのかはonCreateの引数がnullかどうかで切り分けられる。この引数に渡されるBundleは onSaveInstanceState() で設定したものと同じ内容になる。
void onCreate(Bundle state){ initUI(); // ActivityのUIを初期化する if( state != null ){ // このActivityは復元されたものなので、 // state を使って状態を復元する restoreState( state ); }else{ // このActivityは新規に作成されたものなので、 // インテントを使って状態を初期化する initState( getIntent() ); } } void onNewIntent(){ // あるActivityが新しいIntentを受け取った時に呼ばれる // インテントを使って状態を初期化する initState( getIntent() ); } void onSaveInstanceState(Bundle state){ super.onSaveInstanceState(state) // TODO: state に画面の現在の状態を保存する } void onRestoreInstanceState(Bundle state){ // state を使って状態を復元する restoreState( state ); } void initUI(){ // UIの初期化を行う } void initState(Intent intent){ // TODO: intent の情報を使って状態を初期化する } void restoreState(Bundle state){ // TODO: state の情報を使って状態を復元する restoreState( state ); }
isFinishing()
Activityの 終了処理をonPause,onStop,onDestoroy に書く際、一時的な破棄とfinish()による破棄を区別するには isFinishing() を使う。あるActivityが一時的に破棄される際は isFinishing()はfalseを示す。
アプリケーションレベルの状態の管理
もしあなたのアプリAで「アプリ単位の状態管理」を実現したいなら、まずはAndroidはアプリ単位の起動状態なんて管理していないことを知っておいて欲しい。特に何も指定しない場合、アプリAに含まれるActivityは別のアプリBの画面スタックの末尾に積まれることもあるし単独の画面スタックに積まれることもある。公式ドキュメントのタスクアフィニティについての記述を参照。
http://developer.android.com/guide/components/tasks-and-back-stack.html#Affinities
それでもアプリケーションレベルの状態を管理したいなら、以下の手法が使えるかもしれない。
アプリケーション単位の初期化を行うタイミング
- 外部から起動されるActivityの種類を1個だけにする
- そのActivityに android:launchMode="singleTask" を指定する
この状態でそのActivityのonCreate()が呼ばれて、それが復元ではない(Bundle引数がnull)場合、その時点でアプリ単位の状態を初期化していい。
アプリケーション単位の状態の保存と復元
これだけだとプロセスごと破棄された場合に状態が失われてしまうので、
アプリ単位の状態をフラッシュメモリに保存する仕掛けを入れる。
画面スタックの底にあるアクティビティとそこから呼び出される子アクティビティの全てに以下のような記述を行う。
(manifestに登録したアプリケーションクラス) class App1 extends Application{ static MyAppState app_state; void saveAppState(){ is( app_state != null ){ // TODO: アプリ単位の状態をフラッシュメモリに保存する } } void prepareAppState(Activity activity,Bundle activity_state){ if( activity_state == null && activity is (画面スタックの底にあるアクティビティ) ) ){ // 初回起動なので、状態を初期化する // もし直前までの状態が残っていればその後処理を行ってもよい app_state = new MyAppState(); }else if( app_state == null ){ // TODO: フラッシュメモリから状態を読み込む } } } (Activity派生クラス全て) void onPause(){ super.onPause(); ((App1)getApplication()).saveAppState(); } void onCreate(Bundle state){ super.onCreate(); ((App1)getApplication()).prepareAppState(activity, state); }
この方法には問題もあって、外部から呼び出せるアクティビティが1個に限られてしまうし、
それが呼び出されるたびにアクティビティの画面スタックのルート以外の部分が全て一旦クリアされてしまう。
アプリ単位の揮発性の状態を管理する、もっとイイ手法があれば誰か教えてください。
PENTAX K-3用のカメラプレート(Lブラケット)
カメラを縦位置で三脚に固定する際、アルカスイス型雲台の信者はカメラにL字型のプレートを取り付けるのですが
RRSもKirkもK-3用のLブラケットを出す予定はないそうですorz
We have no plans to create custom plates for the K-3 camera at this time.
Unfortunately it seems that camera will not be able to use our BK7-L plate,
which fits the K-7, K-5, K-5 II/IIs models.If you would like a generic plate to fit to that camera,
I’d need to know the distance between the center of the tripod socket and the straight back
edge of the camera. Please let me know if you have further questions.Really Right Stuff, LLC
Q: do you have plan to sell the L-braket for Pentax K-3 ?
A: Sorry we do not. Thank you,
Kirk Enterprise Solutions
(2013/11/1) K-3本体が来てみたらKIRK BL-K7 が普通にぴったり装着できました。底面の突起もちゃんと避けてます。なので以下の記述はほぼ無駄になったかも… ちなみにRRSのBK7-Lは前側のストッパーが干渉して装着できないはずです。
仕方ないので汎用のLブラケットを探してみます。
- KIRK QRLB-S 約273g 航空機用6061-T6アルミ合金より削り出し
- HEJNAR PHOTO L bracket 11 (Base 1 Side 1) 88g Made from 6061-T6 Aluminum
- SUNWAYFOTO DPL-01 75g 軽量の航空機グレードのアルミからCNC(コンピュータ数値制御)削り出し
- SUNWAYFOTO DPL-03 80g 軽量の航空機グレードのアルミからCNC(コンピュータ数値制御)削り出し
- Desmond DAL-1 80g 詳細不明
SUNWAYFOTO DPL-03 ユニバーサル(汎用) L型クイックリリースプレート アルカスイスタイプ DPL-03 【正規日本代理店】
- 出版社/メーカー: SUNWAYFOTO
- メディア: エレクトロニクス
- この商品を含むブログを見る
- 出版社/メーカー: Desmond
- メディア: エレクトロニクス
- この商品を含むブログ (1件) を見る
SUNWAYFOTO DPL-03
製品画像 http://i.imgur.com/ZzUViHc.jpg
- 左側は KIRK BL-K7 です。K-5/K-7用のカスタムLプレート。90g。ネジ穴がクランプの中央にくるようになっています。カメラ本体底面四隅にある足(突起)を避けるよう、周辺部は少し凹んでいます。手前側にはストッパーがないのでK-3でも干渉しない可能性はゼロではありませんが、ネジ穴の位置を調整する機構はないのでカメラ本体の三脚穴の位置によってはフィットしないような気がします。
- 右側は SUNWAYFOTO DPL-03 です。カメラ本体の三脚穴の位置にあまり依存しない構造。ストッパーを外したり左右逆に装着したりできます。HDMIやUSBの端子と干渉するおそれがありますが、K-3ならFLU CARDがあるのであまり気にする必要はないでしょう。画像手前の部分が長めなので、装着位置によっては電池ボックスを開けられなくなります。
JTec の汎用Lブラケット
- Universal Mini 58g? WHD=2.915,2.195,0.990(inch)
- Universal Compact 58g? WHD=2.980,2.300,1.450(inch)
- Universal Standard 58g? WHD=3.800,2.850,1.500(inch)
- 日本への海外発送アリ
製品画像を見る限りコンパクトそうで良いのですが、重量が全部58gというのは記載ミスでしょう。
感想
電池ボックスを塞いでしまうのは思ったより難儀です。重量よりも全長の短さを重視した方がいいかもしれません。K-5で測った場合は横幅95mm以内であれば電池ボックスを塞ぐことはないようです。挙げた中でこの条件を満たすのはhejnarの92mm,JTecの74mm,76mmが相当します。
使用感などの報告はK-3本体が届いてから…
PENTAX K-5, K-3 のACアダプタ
ペンタックスのデジタル一眼レフに装着するACアダプタは二種類あります。
- K-AC50J (D-AC50とメガネケーブルのセット)(対応機種 645D/ K-5/ K-7/ K10D/ K20D )
- K-AC123J (D-AC120とメガネケーブルのセット) (対応機種 K-5II / K-5IIs / K-3 )
実際に両方買ってみました。
製品画像 http://i.imgur.com/jh6QObC.jpg
サイズと重量は K-AC50J よりも K-AC123J の方がややコンパクトですが、コネクタ形状と定格出力(DC 8.3V 2A 16.6W)は同じでした。
気になって問い合わせてみたら「結論からいうと互換性はある。明記していないのは認可が云々」という回答を頂きました。
どうも電気用品安全法絡みのモデルチェンジのようですね。
…ちくしょう! 片方は無駄になっちゃったじゃないか!