Androidの実装をOSのバージョンが2.xの頃からしておらず最近のコーディングの仕方をキャッチアップしているので、メモを残して行きます。 画像キャッシュ メモリキャッシュ ディスクキャッシュ 大きなBitmapをメモリに読み込むときに気をつけること inPreferredConfigで画像の質を下げメモリ使用量を減らす inPurgeableでGC時に解放されるようにする inJustDecodeBoundsとinSampleSizeでメモリ読み込み時にメタ情報のみを先に読み込み、1/nサイズにしたものをロードする Bitmapオブジェクトのリサイクル 画像キャッシュ メモリキャッシュ Twitterのタイムラインを実装するような時に、APIレベル12以前は下記のように画像キャッシュをしていたと思います。WeakHashMapのがいいかもですが。 public class ImageC
みなさんこんにちは。有山圭二です。 今年も、Google I/Oの季節がやってきました。 Google I/Oは、Google社がアメリカのサンフランシスコで開催する年次の開発者会議です。今年は5月28日と29日の二日間に予定されています。 基調講演ではGoogleの今後の方針や、新しいテクノロジー・プロダクトが発表されます。その他にも、各種テクノロジーを担当するGooglerに会って直に意見や要望を言えたり、I/Oに参加する世界中の開発者と意見が交換できるのも魅力の一つです。 今年のGoogle I/Oで何が発表されるのか、まだ不透明な部分が多いのが実際です。個人的には、Androidアプリ開発に使える新しい言語、例えばGolangやKotlinに正式対応するなどがあれば面白いなと思います。 ともあれ、この記事は引き続き、古くて新しいCanvasについてもっと知ろうと言う趣向でお送りしま
みなさんこんにちは。有山圭二と申します。 Android 5.0(開発コード: Lollipop)の正式版の配信が開始され、いよいよAPI Level 21とMaterial Designへの対応に本腰を入れるシーズンになりましたね。 このブログはTech Blogと言うことなので、エンジニアに向けてLollipopで追加された新しいAPIを詳解する……という企画を最初考えたのですが、きっとLollipopに関する情報は他の新しいもの好きがQiitaなどに書くと思うので、今回は思い切ってAndroidのCanvasに焦点を当てることにしました。 「Lollipopの時代にまさかのCanvas」と、驚かれる人も多いかもしれませんが、頻繁に使う機会がない分、ネット上にまとまった情報も少ないので、備忘録を兼ねている面もあります。 1.1 Canvasとは 最古のAPI Canvasは、Andro
Fundamentals Of The Data Binding Androidアプリケーションを開発していると冗長な記述を要求される場面によく出くわします。レイアウト内のViewの操作もそのひとつでしょう。レイアウトをinflateした後にfindViewById()などでViewを取り出し(しかもキャストまでしなくてはいけません)、必要なデータやスタイルをセットしたり状態に合わせて表示/非表示の変更をしたりしなければなりません。またActivityやFragmentなどの状態が変わったとき、Viewを動的に更新するにはコード上でViewの操作をするしかありません。たちまちView操作の為のコードがそこら中に溢れかえるでしょう。 こうした状況の中登場したのがRoboGuice*1やButterKnife*2などのView Bindingを提供するライブラリ達です。これらのライブラリを用い
retrofitはHTTPクライアントだけあって当然formの要素や画像のようなマルチパートなものもPOSTできるのだけど、その方法があんまり見つからなかったので覚書。見つからなかったというよりか、現状の最新安定バージョンの2.0でのPOSTの方法と過去のバージョン1.9での方法がかなり違う上に1.9での情報ばっかりがあふれていたので見つけにくかった…というだけだったのだけど。 概要 1.9ではTypedFileというクラスを使ってそれに画像なり何なりをいれてPOSTするのだけど、2.0ではRequestBodyにPOSTしたい要素を入れるようにする。 インターフェース部分は以下のように。@Multipartアノテーションと@Partアノテーションを使う。@Partアノテーションをつけた引数としてRequestBodyを指定する。 public interface FileUploadSe
AndroidのAudioRecordの問題 - TadaoYamaokaの開発日記で、 03-28 21:17:52.498 1081-1097/com.tadaoyamaoka.recordsample W/AudioRecord﹕ obtainBuffer timed out (is the CPU pegged?) user=00065320, server=00065320というエラーがでると書いたが、勘違いをしていたためということがわかった。 record.setPositionNotificationPeriod(FRAME_BUFFER_SIZE); の引数のFRAME_BUFFER_SIZEを、AudioRecord.getMinBufferSize()で取得したバッファサイズより小さくしていたことが原因だった。 shortでのサイズなので、AudioRecord.get
音声スペクトルモニター - Google Play のアプリでは、 AudioRecordを使ってリアルタイムに音声処理を行っているが、 AudioRecordは思った通りに動作してくれなくて扱いにくい。 まず、setPositionNotificationPeriodで指定した間隔で呼ばれるはずのonPeriodicNotificationだが、startRecordingで録音を開始しても呼ばれない事がある。 https://sh-dev.sharp.co.jp/android/modules/d3forum/index.php?topic_id=118sh-dev.sharp.co.jp の情報を見ると、read()によって読み終わった時点で呼ばれるということだが、 確かにstartRecordingの後にread()で読み込むと呼ばれるのだが、 そんなことは、APIリファレンスのど
Record, play and visualize raw audio data in Android Introduction Today I want to show you how to record, play and visualize raw audio data in Android. Recording in raw audio format gives you full control and allows you to visualize the captured audio data. In this article I will show you how you can leverage the low level AudioRecord and AudioTrack APIs to record and play raw data by taking full
注意 この記事の内容は3年ほど前に書きました。筆者はもうAndroidから離れており、内容がかなり古くなっています。ご注意ください。 依存注入の考え方 ハト君はandroidプログラマーとして1年と少し。だいぶjavaに慣れてたくさんのプロジェクトを作成していた。しかし、最近彼には悩みがある。テストの重要性はわかってはいるのだが、どうすればテストしやすいプログラムが書けるのかわからない。AndroidSudioでユニットテストするにはとりあえず、MainActivityにすべてを書かず、クラスとして書き出せばいけることは最近気づいた。ただ、例えばこういう他のクラスに依存しているクラスはとてもテストしづらいのだ。 public class CoffeeMaker{ private Heater heater; private Pump pump; CoffeeMaker(){ heater
#iOS | #Android ファショ通 Swift を身に付けていく過程の記録、最新ニュースや使い方、iPhone、Mac、Android、Python なども。 きもいですよ。 こう書いていたり、 minSdkVersion rootProject.ext.minSdkVersion targetSdkVersion rootProject.ext.targetSdkVersion こう書いてたり�、 dependencies { implementation "com.android.support:appcompat-v7:$rootProject.supportLibraryVersion" implementation "com.android.support:support-v4:$rootProject.supportLibraryVersion" implementat
Recent versions of Android have focused on improving device performance, and one of the biggest improvements came with the addition of Doze Mode in Android Marshmallow and Nougat. In a previous post, we talked about background schedulers in Android, briefly mentioning the effects of Doze Mode in Android Marshmallow. This post will cover Doze Mode in more detail, the changes that are coming with An
I am trying to use the and "&&" operator in xml using Android databinding, android:visibility="@{(bean.currentSpaceId == bean.selectedSpaceId **&&** bean.currentSpaceId > 0)? View.VISIBLE: View.GONE}" but I got the compilation error: Error:Execution failed for task ':app:dataBindingProcessLayoutsDevDebug'. org.xml.sax.SAXParseException; systemId: file:/Users/path/app/build/intermediates/res/merged
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く