ひらい ぶらり Hi-Library

ぷろぐらみんぐについて。ときどきどうでもいいことについて。

AWS SDK for PHP 3.x のS3のCopyObjectで署名エラー

getObjectとかlistObjectは特に問題なく動作しているのに、CopyObjectの時だけ署名エラーがでる。 SignatureDoesNotMatch はい。 色々検証してみた結果、CopySourceの項目に日本語が使われているとエラーになるようだ。 Keyには使用しても問題ない。 仕方な…

AndroidTestCaseでsetUpが呼ばれた後にApplicationクラスが生成されてハマった

解決策:InstrumentationTestCaseにして、setUpメソッドで super.setUp した後にgetInstrumentation.waitForIdleSync() を呼ぶべし 期待していた動き - Appicationクラスが生成される - TestクラスのsetUpメソッドが呼ばれる - Testクラスのtestメソッドが呼…

FragmentStatePagerAdapterを使えと言ったな、あれは嘘だ

第二の結論 データの更新をしようなんて考えない。FragmentStatePagerAdapterごと作りなおす。 注意 FragmentPagerAdapterではAdapter作りなおしても意味がない チラ裏 必ずしもFragmentStatePagerAdapterを使えば、notifyDataSetChangedで期待通りに変わる…

FragmentPagerAdapterでnotifyDataSetChangedを呼んでも更新されない

結論 FragmentStatePagerAdapterを使え、でも問題はたくさんあるから油断をしてはいけない ※追記あり FragmentStatePagerAdapterを使えと言ったな、あれは嘘だ - ひらい ぶらり Hi-Library 解決する内容 FragmentStatePagerAdapterは、destroyItemでfragment…

特定の辺だけにstrokeを付ける場合の補足

【Android】特定の辺だけにstrokeをつけたい - Qiitaqiita.com こちらの記事で丁寧に書かれて居るのだけれども、Javaで書いた場合とXMLで書いた場合に微妙な差異があって、機種によってはJavaで書いた場合に意図しない挙動を起こす可能性があるので補足。 元…

manifestのproviderのandroid:authorityesにvalues/strings.xmlに定義した文字列を使うとインストールに失敗する

BuildTypeをreleaseでapeをビルドしようとしたら、lintでMissingTranslationとか出てコケた。 values-jaとか作ったら、全てのkeyがvaluesにあるものと一致しないとコケるようだ。そこはよろしくvaluesの値を使って欲しい。 どうやらこの警告は無視してビルド…

androidでfont変えると色々と弊害があるっぽい

怪奇現象が色々発生した maxLinesとか指定するとずれる なんだか2行目の文字が1行目に食い込んだりする 消える もはや表示されない。 端末によって挙動が違う 消えたり、消えなかったり、ずれたり、ずれなかったり 噂によるとheightをしてしたり、layout_gr…

フォントサイズ自動調節TextView メモ

フォントを変更した場合には一手間加える必要がある 参考 http://dev.classmethod.jp/smartphone/android-font-fit-text-view/ https://gist.github.com/STAR-ZERO/2934490 mPaint.setFaceType(getFaceType()) // フォントをPaintオブジェクトに渡してあげる…

androidでTextViewに埋め込みフォントを使う

結論 API Level9以降(2.3)ならCaligraphyを使う chrisjenx/Calligraphy · GitHub 疑問 マテリアルガイドラインによると、RobotoフォントとかNotoフォントを使えって書いたある。 ちょろっと調べて思い浮かんだ疑問 assetsにファイルサイズ制限なかったっけ…

Volleyで302リダレクトできなかった話

どうも、バグを生み出すプロ、しんばしさんです。 なんやて工藤! 非同期のHTTP通信ライブラリのVolleyを使用していたのですが、302リダイレクトするAPIへアクセスしたところ com.android.volley.NoConnectionError: java.io.IOException: Could not retriev…

TextViewで縦にはみ出してるかどうかを検知したい

どうもわたくしです。 TextViewの高さを超えてテキストがセットされていたら、ボタンを出したい。 ボタンを出したいんです。 こんなかんじにTextViewを超えて長文が入力されていたら ボタンを出したい。 解決編 行数 > 最大行数(TextViewの高さ / 1行あた…

Android で MD5とかSHA-256とかするのにcommons-codec使おうとしたらエラーが出た話

MD5やらSHA-256でハッシュ化したい機会ってのはよくあると思うんですが、ググるとなんでかMessageDigestクラス使って長々と記述するサンプルが多く見かける気がします。 ラップしたクラスを作ってもいいんですが、せっかくだから俺はcommons-codec使うぜ! g…

フォントサイズ自動調整TextViewをListViewで使いたい

大体皆さん "android フォント 自動" "android Textview 横幅" とかでググって、TextViewを継承したクラスの実装を見かけたと思います。 参考 http://dev.classmethod.jp/smartphone/android-font-fit-text-view/ https://gist.github.com/STAR-ZERO/2934490…

mitmproxyでRequestを書き換える時にvimが勝手に\r入れちゃう

vimは勝手に改行コード入れちゃうので :set binary noeol と打ってから保存すればおk

ImageViewの明度、コントラスト、彩度、色相をObjectAnimatorでアニメーションする

タイトルのようなことをしたかったんですが、そんなプロパティはなかったのでImageViewを拡張してプロパティをつけたら出来ました。 ↓のようなクラスを作って、xmlなり動的に生成するなりしたImageViewに対して操作をすれば期待した動きをしてくれる。 publi…

Android Studio を 0.8.14 にアップデートしたら「The Android SDK folder can no longer be inside the application folder.」とか言われた

こんにちはこんにちは 久しぶりにAndroid Studioを起動することになったらアップデートが来てたので、作業後にアップデートしてみることに。 なんか出た。 んー、SDKフォルダをApplicationsに置くなということらしい。詳細を見てみると本来はそういうとこに…

androidで強制的にChromeで開くリンク

<a href="intent://yahoo.co.jp#Intent;scheme=http;action=android.intent.action.VIEW;package=com.android.chrome;end ">Chromeで開く</a> このリンクを開くアプリケーションがまともな実装をしている場合に限り、http://yahoo.co.jpが開かれるっぽい。 Operadで実験してみたところ成功したけど、全てのアプリで起動するかわWebViewClientの実装によるので絶対とはいえないのが切ない…

WebViewとかで未知のSchemeに対する処理最新版(?)

androidアプリを作る際にWebViewを組み込んでアプリ内ブラウザで表示することとかよくあると思います。 そんな時にWebページの中にhoge://hugahugaみたいなURIが出てきた場合は、大体shouldOverrideUrlLoading内に @Override public boolean shouldOverrideU…

Laravel4 でSessionをMemcachedに保存したい

備忘録 phpのモジュールでmemcached入れておく必要があるよ memcacheじゃないよ app/config/session.php

Laravel4で複合プライマリーキーを設定する

Laravel4のSchemeBuilderを使って複合プライマリーキーを設定したかったけどダメだった。 パーティションを切りたかったので、パーティションのキーになる日時も合わせて複合主キーにしたかったけど、incrementsメソッドにはもれなくprimaryがついちゃうらし…

Android Studio 0.4.2 にあげたら 「You are using Gradle version 1.6, which is not supported. Please use version 1.9. Please point to a supported Gradle version in the project's Gradle settings or in the project's Gradle wrapper (if applicable.)」とか言われた

久しぶりにandroidのアプリケーションをいじることになったので、AndroidStudioを新しいマシンに入れ直して、目的のプロジェクトをcloneして、gradleはwrapperを使うようにして開いたところ、表題のようなことを言われた。 「おめーのプロジェクトで使ってる…

SmartWatch2のapkをAndroidStudioでビルドしてみる #vgadvent2013

この記事はVOYAGE GROUP エンジニアブログ : Advent Calendar 2013の16日目の記事になります。 ガジェッターの皆さんこんにちは。@shinbashiです。 昨今では猫も杓子もスマホスマホですが、スマホといえばあれですよね。 SmartWatch2 これですよね。大体の人…

話題のKLABのPlaygroundのsoをビルドしようとして失敗した

MacでPlaygroundをandroid用にビルドしようとして微妙にコケました。 ビルド手順はこちらを参考にすると非常にわかりやすいです ブライテクノBlog 2D/2.5Dゲームエンジン Playgroundのセットアップ http://brightechno.com/blog/archives/150 NDKのパスは同…

GooglePlay で アプリを別のアカウントに移管する

「アプリを移譲することになった」 「やっぱり別のアカウントでアプリを管理したい」 ってのは割とよくある話だと思います。 こちらからどうぞ(英語必須) https://support.google.com/googleplay/android-developer/contact/dev_registration?extra.IssueT…

androidアプリ開発におけるカメラ問題に決着をつけようじゃないか 解決編

条件振り分けで取得方法を変える getContentResolver().insert()を使わない。MediaScannerConnection等を使って標準ギャラリーには反映させる。 そんな訳で、上記の具体的な解決方法を書く。 まず、getContentResolver()を使わないので、別の方法でカメラの…

androidアプリ開発におけるカメラ問題に決着をつけようじゃないか 問題編

そろそろ決着をつけようじゃないか。 鬼門鬼門ってもういい加減いいだろ。androidが発表されてから何年経ってると思ってるんだ。 情報で揃ってるだろJKwwwwwwww そんな風に思ってた時期が僕にもありました。 androidにおけるカメラから画像を取得す…

Android Studio:resource entry is already defined.

ビルド時にこんなエラーが出た。 9patchにしなければいけない画像が9patchになっていなかったので、以下の様な作業をしたら発生。 プロジェクトをリビルドしてもダメだった。リビルドってクリーン&ビルドじゃないのだろうか? hogehoge.png をリネームして …

ListViewの中にViewPagerを入れる場合の注意

今回ListViewのheaderに、横にスワイプしたりフリックしたりすることで画像が切り替わる様なビューを入れることになったのですが、困ったことになりました。 ここまで読んでピンと来て解決策だけ知りたい方はすっ飛ばして下の方を読んでくだい。 で、どんな…

すげえ!Android Studioで9patchの編集ができる!

プロジェクトツリーから*.9.pngファイルを参照すると、こんなエディタが開いた。 そもそもは9patchは画像をデザイナーさんに作ってもらったところ、左側に黒いピクセルがなくてビルドに失敗して「ちくしょう雑な仕事しやがって、週明けにけちょんけちょんに…

Android Studio にIdeaVimプラグインをいれる

参考 http://ytch.hatenablog.com/entry/2013/05/18/195707 リポジトリが見つからなかったので、リンク先と同じようにzipを落としてきてインストール。 ただしなんだかVim.xmlが見つからないというエラーが出ている(出ているけど動く) エラー出っぱなしな…

FragmentTabHost で TabWidget をBottom に配置する

非推奨になったTabHostを使えば、普通にbottomに配置出来たのですが、FragmentTabHostは何やらバグっているらしく、配置順やgravityを変更してもbottomに配置されませんでした。 どうやら既にIsuueとして報告されているようで、参照先のコメントにあるの様に…

Android4.1系 + FragmentTabHost + WebView で文字入力が出来ない

endBatchEdit on inactive InputConnection とか出て半角英数字を入力しようとすると、フォーカスが次元の彼方まで吹っ飛ぶ。 日本語入力は通る。 ( ゚д゚) 強引にInputConnectionをWebViewに渡して見ましたがダメでした。 どこかで半角英数字が入るとFocusが…

FragmentTabHost内部のFragmentでAsyncTaskLoaderを使ってたらargsが変わらない

結論:タイトルが長い 結論:onStopでgetLoaderManager().destoryLoader(id)してあげる こんにちはこんにちは 世間では何かとAsyncTaskじゃなくてAsyncTaskLoader使おうぜっていう風潮ですね。 僕もブームに乗ってAsyncTaskからAsyncTaskLoaderに乗り換えて…

width and height must be > 0 だからといって、widthやheightが実際0なわけじゃないこともある

java.lang.IllegalArgumentException: width and height must be > 0 Matrix matrix = new Matrix(); matrix.postScale(sx, sy); Bitmap.createBitmap(bmp, 0, 0, bmp.getWidth(), bmp.getHeight(), matrix, true); 良い子の諸君! エラー文にwidthとかheigh…

android2.x系だと、AnimationSetのメソッドの呼び出し順によってはアニメーションが無視される

無視という表現が正しいかわからないけれども、何も起きなくなる。ただしAnimationListernerはAnimationEndを検知する。どういう時に起きるのかというと AnimationSet animationSet = new AnimationSet(true); RotateAnimation rotationAnimation = new Rota…

AnimationListernerのonAnimationEndでViewをremoveViewするとNullPointerExceptionが起きる

タイトル通りなので、onAnimationEndの中でそのままremoveViewしてはいけない。 結論だけ言うと、Handlerを使って処理を遅延させて回避する。 @Override public void onAnimationEnd(Animation animation) { new Handler().post(new Runnable() { @Override …

androidでファイル名を指定して保存するときに使えない文字列

Linuxベースだから"/"以外は使えると思ったら、普通にwindowsで使えない奴は使えない ↓らへん <>:*?"/\|そのはずが、GalaxyS3だと普通に"?"が入ってても動いた。別のandroid4.0系では動かなかったので、別にバージョンの差では無さそう。まさかの端末固有の…

androidのIntentで日本語ファイル名を扱う時の注意点

Uri型で渡すので、SDカードとかに保存されたファイル名を渡すときは以下のような感じでエスケープしないとダメ。 public void playMusic() { Intent it = new Intent(Intent.ACTION_VIEW); Uri uri = Uri.parse("file://" + Environment.getExternalStorageD…

resumeTimers pauseTimers を使う時の注意

WebViewを使うと電池の消耗が激しい時の解決方法 を書いた後に気づいたので書きます。 電池の勝手な消費が解決したわけですが、よくわからないままに終わらせるのはよくないなーと思ったのでリファレンスを覗いてみたらこんなことが書かれてました。 pauseTi…

WebViewを使うと電池の消耗が激しい時の解決方法

androidアプリを開発していて、特に変更した覚えがないのにレビューに「電池の消費が激しい、アンインストールした」 とか書かれてたので 「今回のアップデートではWebViewの初期URLを変更しただけでそんなことがあるわけ」 あったで、実際変更は上記の通り…

正確には、android4.0で、且つ解像度が1280を超える場合らしい。

その場合はタブレット端末と認識されて、勝手に余白ができてしまうようだ。で、GlaxyS3での見栄えが良くないので、android4.0以前のものと同じにしてくれと言われた。 タブレットで見にくくなるのは良いのだろうか・・・ともかくそういうことなので、どうに…

Android→PHP Base64encodeの値を渡す

諸事情でandroidからintentを使って標準ブラウザを起動して、GETパラメタにBase64でエンコードした値を サーバ側(PHP)で受け取って、Base64でデコードしなきゃいけなかったのですが、出来なかったのでメモ。結論から言うと PHP側の問題 GETなりPOSTなりでB…

CodeIgniter2.0.3 以降でSmarty3.0を使う

CodeIgniter2.0.3以降からは、system/core/Loader.phpのCI_Loaderクラスで「_ci_cached_vars」がprotectedになってしまったので、僕が以前書いた記事のライブラリでは以下のようなエラーが出てしまう Cannot access protected property MY_Loader::$_ci_cach…

hatena world?

hatena world!

CodeIgniter2.0 でSmarty3.0を使う

CodeIgniter2.0ではSmarty3系は使えない、みたいな記事を書いたんですが、使えました。すいません。 CodeIgniter2.0 でSmarty2.6を使う - ひらい ぶらり Hi-Library正確には、「CodeIgniterでSmarty2と同じ仕組みでSmarty3は使えない」です。当たり前ですね…

CodeIgniter2.0 でSmarty2.6を使う

追記(2011-04-28): 2011-04-28 - ひらい ぶらり Hi-LibraryCodeIgniter2 を試す (Smarty 編) : あかぎメモ を参考にCodeIgniter2.0でSmarty2.6を使おうとしたらちょいちょいエラーが出たのでメモ。1つめ PHP Warning: Call-time pass-by-reference has bee…

CodeIgniter2.0でDA Authを使う

表題の様な事をしたかったんですが、DA AuthはCodeIgniter2.0には対応していない。 2.0で使うには以下を変更する必要がある。コントローラーでは Controller => CI_Controller parent::Controller(); => parent::__construct(); モデルも同様に Model => CI_…

file_get_contents の代わりに http_getを使う

peclでインストールできるpecl_httpってのがある。 インストール方法は http://blog.cheki.net/archives/1307 この当たりを参照していただくとして 利点 timeoutとか色々設定できる 使い方 $body = http_parse_message(http_get($url))->body; 簡単。http_ge…

preference でintentを飛ばしたい

preferenceは何もxmlだけで書かなくても、intentで飛ばすことができるらしい。 僕は設定画面からOuth認証させたかったので、通常のxmlだけでは定義できないので普通のActivityに飛ばしたい。で、注意したいのがintentを使用するときにtargetClassはパッケー…

PHPでmemcacheのkeyに制御文字(コントロールコード)を使う場合の注意

PHPでmemcache関数でセットして、取り出すときはtelnet接続するという奇特なことをしている時にはまったのでメモ。 こんなことする人他に居るんだろうか・・・現象 としてセット。^Aは制御文字。 で接続。 で取得しようとすると「hoge^A6」とい…