酢ろぐ!

カレーが嫌いなスマートフォンアプリプログラマのブログ。

開発-Android

Realm Javaを使って複数の条件でソート(並べ替え)する

本記事ではRealm Javaを使って複数条件でソートする方法を紹介します。 Realm Swiftでの複数条件のソートしたい場合、「Realm Swiftを使って複数の条件でソート(並べ替え)する - 酢ろぐ!」の記事をご覧ください。 並び替えをする String[] names = { "onlin…

Realm JavaでnullableなInt配列のjsonファイルを読み込む

メモ。あとで書き足す(予定)。 Realm Javaではjsonファイルを読み込んでそのままRealmのオブジェクトをすることができます。しかし、intやstringといったプリミティブ型配列の場合にはそのままダイレクトにRealmに格納することができません。 JSON APIは数値…

AndroidでObjectAnimatorを使ってViewをアニメーションさせる

久しぶりにAndroidアプリでアニメーションしています。 説明はあとで書きます。 アニメーションさせる imageViewのアルファ値を1秒(1,000ミリ秒)かけて0(透明)するアニメーションです。 ObjectAnimator.ofFloat(imageView, "alpha", 0).setDuration(1000).st…

AndroidアプリをJava 8に対応した

あとで書き足すかもしれない。メモ代わり。 projectの方のbuild.gradle buildscript { repositories { jcenter() } dependencies { classpath 'com.android.tools.build:gradle:2.2.0' classpath 'me.tatarka:gradle-retrolambda:2.5.0' } } appの方のbuild.…

Androidで公式YouTubeアプリを起動させる

AndroidアプリからYouTubeアプリを起動さてみましょう。自分のアプリからアオリちゃんの「トキメキ☆ボムラッシュ」のソロPVを起動させます。ブラウザで見る場合は下記のURLから見られます。 www.youtube.com この動画の場合、URLのhttps://www.youtube.com/w…

Androidアプリのビルドで「Unsupported major.minor version 52.0」のビルドエラーが発生する

Jenkinsを使ってアプリをビルドをしているのですが、この2ヶ月間少し毛色の違うプロジェクトをやっていたこともあって、ビルドサーバーのジョブは増えていませんでした。 久しぶりにAndroidアプリのビルドジョブを追加すると、見たことのないタイプのエラー…

Androidデバイスに入っている楽曲データを取得する

Androidデバイスに入っている楽曲データ一覧からアーティスト情報やタイトル情報を取得します。 private static final String[] projection = { MediaStore.Audio.Media._ID, MediaStore.Audio.Media.DATA, MediaStore.Audio.Media.TITLE, MediaStore.Audio.…

Androidでセルの並び替えをおこなえるライブラリ「ListViewAnimations」を導入する

iOSのUITableViewのスワイプやセルの並び替えみたいな挙動をAndroidで実現するための「ListViewAnimations」というライブラリがあります。 下記のリポジトリに、ListViewAnimationsのDynamicListViewを実装したものを公開しておきました。GitHubの実装がその…

AndroidでNumberPickerの表示項目数を変更する前にはsetDisplayedValues(null)で初期化する

ここ最近Androidアプリネタが続いていますが、この土日悩んだアプリがクラッシュしてしまう件についてメモしておきます。 日付ごとに異なった時刻を設定できるNumberPickerがありました。イメージがわきにくいと思うので、別の例で……都道府県がいくつか並ん…

Realm Javaのv0.80.3からv0.90.0にアップデートしたらビルドが通らなくなった

久しぶりにRealm Javaを使ったアプリをアップデートすることになり色々と手を入れている最中なのですが、使用しているライブラリのひとつの「Realm Java」も古いバージョンのものを使っていたのでこの機会にアップデートさせようとしました。 この記事ではv0…

Android StudioでKotlinを使ってボタンをタップするたびにカウントが増えていくコードを書く

前回作成したスケルトンプロジェクトを少しだけ弄って、よくあるボタンを押す度にカウントが上がっていくようにしましょう。 content_main.xmlより変更点を抜粋。 layout.xmlにボタンを配置します。ベースがreLayoutなのでViewが被ってしまうのでInearLayout…

Android StudioでKotlinのプロジェクトを作成する

kotlinのスケルトンプロジェクトを作るのは、一旦Javaのプロジェクトを作ってからKotlinのコードにコンバートするのが楽なようです。 Android Studioを起動して、[Start a new Android Studio project]を選択します。 アプリケーション名は適当に「Kotlintes…

Android StudioにKotlinプラグインをインストールする

Kotlinのバージョンがv1.0になったみたいですね。 日本語で書かれた記事はこちらが詳しいです。 そういえば、AndroidでSwiftが使える「RemObjects Silver」がありましたが、アンテナが低いのかあまり話を聞きませんね。 最近、仕事でScalaを使っているのでAn…

Macのhostsの設定をGenymotionへ転送して同期させる

Androidの場合、Genymotionを使って開発をしています。本記事では、MacのhostsをGenymotionでも使う方法を紹介します。 data.example.comに接続するIPアドレスを手動で変えたいときがあります。 例えば、サーバーを開発用と本番用で分けていて、それぞれのサ…

Android(303SH)で音楽を聴く

僕自身あんまり音楽を聴く習慣がないのでAndroidで音楽を聴く方法をしりませんでした。今日、必要になったのでAndroidに音楽を入れてみました。 まず、PC(Mac)とAndroid(303SH)をUSBケーブルで接続しました。USBケーブルでの接続のモードには3つありました。…

Androidで文字列の日付をDate型にパースする(ISO 8601、RFC 1123)

Androidアプリで日時を扱うことが多くなってきました。少し前に「AndroidでHTTPレスポンスヘッダのLast-Modifiedの値を取得する」という記事を書きました。 RFC 2616ではHTTPレスポンスヘッダーに含まれているDateやLast-Modifiedの日付はRFC 1123フォーマッ…

AndroidでChromecast対応アプリを作る

先日のGoogleの新製品イベントでChromecast 2とChromecast audioが発表されました。Chromecast 2はドングル型からペンダント型へのデザイン変更と次の動画を先読みするFast Play機能対応や5GHz対応がメインでしたね。過去モデルとは基本的にあまり変わらなさ…

Androidでヘッドセット(イヤホン)の接続状態の変化を検出する

Androidでヘッドセット(イヤホン)の接続状態が変わったイベントを取得する必要がでてきました。ヘッドセットの状態変更関係を検出する用途では2つのIntentが存在しています。 Intent.ACTION_HEADSET_PLUGとAudioManager.ACTION_AUDIO_BECOMING_NOISYです。 I…

Androidでネットワーク接続状態が変わったイベントを取得する(接続状態の変化を検出する)

ACCESS_NETWORK_STATEの権限が必要なのでマニフェスト(AndroidManifest.xml)でパーミッションの追加をおこないます。 <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/> 次にマニフェストにレシーバーの設定をおこないます。android.net.conn.CONNECTIVITY_CHANGEを拾えるようにします。 <receiver android:name=".ConnectivityReceiver" > <intent-filter> </intent-filter></receiver></uses-permission>

Android Studioを使ってAndroidアプリの新規プロジェクトを作成する

Android Studioのv1.3.2を使って解説します。 Application nameには任意の名前をつけます。ここでは FragmentSample にしました。 Androidアプリのパッケージ名は、jp.ch3cooh.app_nameのように逆ドメイン記法で表します。次のCompany Domainを入力すると、…

【2015/8/31まで】Windows Phoneアプリ開発者は無料でXamarinのライセンスがもらえるよ!

C#でiOSやAndroidのアプリを開発できる「Xamarin」のライセンスを無料で入手できるキャンペーンをやっているようです。 Xamarinの代理店エクセルソフトの田淵さんのブログによると…… 2015/8/17 以前に公開された Windows Phone アプリ個人開発者に無料の Xam…

AndroidでHttpURLConnectionの自動リダイレクトを抑止する

管理が面倒になったのでch3cooh.jpで書いていたコンテンツをこのブログ(はてなブログ)に移動させていっています。移動させるのと同時にリダイレクトするように設定しています。 リダイレクトというのは、旧コンテンツのアドレスhttp://ch3cooh.jp/category/a…

Androidで通知(Notification)が表示されないので調べてみたらSmallIconを設定するのを忘れていた

少しハマった。Androidで通知(Notification)が表示されないので調べてみたらどうもSmallIconを設定しておかないといけないみたい。 仮のものでも使ったら良かったんだろうけど、適当なアイコンがなかったので何も設定していなかったら通知が表示されませんで…

SAMSUNG Galaxy S6 edgeが届いた

先週の日曜日の夕方にパンツからGalaxy S6 edgeが届きました。パッケージはあんまり手がかかってないシンプルなものです。Lumia 800あたりが一番高級感あったように思える(個人の感想です)。 フタを開けたら本体が出てきます。色はゴールドプラチナ!!ウェ…

AndroidでHTTPレスポンスヘッダのLast-Modifiedの値を取得する

アプリケーションで使用する画像ファイルやデータをサーバーに置いて必要に応じてダウンロードすることはよくあります。ただ毎回ダウンロードする必要がないものもあります。そのような場合にはHTTPレスポンスヘッダの最終更新日時Last-Modifiedの値を参照し…

JenkinsでGradleを使ってAndroidアプリをビルドしたときの失敗と対処方法

初めてJenkinsを使ってAndroidアプリをビルドするにあたって発生したエラーとその対処方法をメモしておきます。Android Studioで開くとIDE側でよしなにしてくれるんだけど、コマンドラインからだと自分でエラーに対処しないといけない。自分が引っかかった内…

Xamarin.Androidでアラート(AlertDialog)を使ってメッセージを表示する

Xamarin.Androidでアラートを表示します。 var alertDialog = new AlertDialog.Builder(this); alertDialog.SetTitle("title"); alertDialog.SetMessage("Message"); alertDialog.SetPositiveButton("Positive", (sender, args) => { // Positiveボタンをタ…

Xamarin.Androidの開発Tipsの記事まとめ

随時更新していきます。ここまで書いてから一覧性が悪いような気がしてきました。 Xamarin.Android開発ことはじめ 画面やUIパーツ 画面遷移 テキストを表示させるラベル(TextView) ボタン(Button) 画像を表示するビュー(ImageView) アラート、ダイアログ(Ale…

【解決済み】Xamarin.Androidで「SimpleListItem1」などの組み込みのリストアイテムのレイアウトの定義値が存在しなくって困った件

Xamarin.iOSで作っていたアプリが一通りできたので審査に出しました。同じアプリをXamarin.Androidで作るにあたってリストビューってどうやって表示するんだろうと調べてみました。 ListViewに文字列を表示させるだけであれば難しくなさそうと思って実装して…

「Windows Store App Logo Maker」でiOSやAndroidのスマートフォン向けのアイコンが作れるようになったぞ!

各プラットフォーム向けに同じアイコンを何回リサイズしないといけないんだ。アイコンを作るの面倒くさいと常々考えていました。 大きな画像からWP,Win8,iOS,Android用のアプリアイコンを生成するツール欲しい2014-02-20 15:14:50 via OS X これを高橋さんが…

ReSharperやIntelliJ IDEAのJetBrains製品が最大51%オフの割引セール中(2013/4/22まで)

Need more reasons to buy great tools from JetBrains? April 15-22, Get up to 50% OFF and support #EarthDay! URL2013-04-15 17:34:38 via webReSharper、IntelliJ IDEA、AppCodeで有名なJetBrainsの製品が最大51%オフの割引セール中です。Get up to 50%…

Androidでフェードイン/フェードアウト アニメーションを実装する

Androidで時間経過とともにアルファ値を変化させることで、フェードイン・フェードアウトの実装をおこないたかった。Android 3.0から追加されたらしいObjectAnimatorを使うことで、アルファ値を変化させることが可能なようです。以下のコードでは、getHogeVi…

Androidで繰り返し発生するタイマーを使う

100msごとに実行されるタイマーを使いたかったので調べました。 /** タイマー */ Timer timer = null; /** タイマーを開始する */ private void startTimer() { int firstInterval = 100; int interval = 100; // Timerオブジェクトの生成 timer = new Timer…

「android:largeHeap="true"」で使えるアプリケーションヒープのサイズを拡大する

ガツガツとメモリを食うアプリを作っていて、OutOfMemoryErrorが多発しているのに頭を抱えています。アプリの性質上とりあえず動けば良いものなので、System.gc()を連打してもあまり効果がありませんでした。今日色々と調べていたところ、AndroidManifest.xm…

AndroidでVideoViewを使って動画を再生させる

以下のようにlayout xml画面が定義されているとします。 <VideoView android:id="@+id/video_view" android:layout_width="748px" android:layout_height="518px" /> VideoViewにて動画の再生をおこなうには、動画ソースの設定をおこない、その後再生をおこないます。動画ソースの設定は、動画ファイルのURLもしくはファイルパスを使います。ここでは仮にボタンがタ</videoview>…

AndroidでImageButtonのボタン部分を非表示にする

ImageButtonにImageを設定しておいても、ボタンの上に画像が表示されるという非常に滑稽な状態となる。設定した画像だけを残して、ボタンの表示を消す場合は、backgroundプロパティに「null」を設定します。 android:background="@null" 実際にlayout.xmlで…

AndroidでImageViewのマージンを変更する

Androidアプリのド短期案件対応中です。かなーり久しぶりなので本を読んだり、ネットで調べながら昔の勘を取り戻しながら進めています。下図のようにSlideBarの変化に伴って、バーの上部に配置したImageViewを連動させて動かしたいと考えています。そもそもV…

Androidアプリでのページめくりを実装する方法

Flipboardのようなページめくりが格好良かったので、Androidでどうやって実装ができるのか調べてみました。 Flipboardをご存じでない方は、こちらのリンクをご覧ください。ページめくりは、どのように実装されているのでしょうか?Flashでの実装ですが、基本…

最近買った本と買いたい本「iOS/Android/Windows Phoneプログラミング」「Jenkins実践入門」他

iOS/Android/Windows Phoneプログラミング (日経BPパソコンベストムック)作者: 日経ソフトウエア出版社/メーカー: 日経BP社発売日: 2012/01/12メディア: 雑誌 クリック: 25回この商品を含むブログ (4件) を見る「Windows Phoneアプリ開発する人なら読んでお…

Androidで特定のActivityの画面の向きを指定する

Androidにも加速度センサが付いている様で、縦長画面の状態で端末を傾けると横長画面で表示されてしまいます。特定の画面の向きは固定にしたい場合は、AndroidManifest.xmlのactivity要素にscreenOrientation属性を追加します。下記のサンプルコードは、縦長…

Android2.2でActionBarっぽいものを実装する

Android 3.0からはActionBarが標準に追加されました。Android 2.2での対応の仕方が判らなかったので自前でActionBarっぽいものを作成しました。ほとんどがシンタックスエラーでコピペじゃ動かなかったのですが、Simple Actionbar for Android Applicationを…

Google I/O 10で発表された5つのAndroidのApplication UIデザイン

未だにピンとくるAndroidアプリのUIが思いつきません。AndroidではアプリのUIに統一感が無く、メーカー製のアプリも標準アプリとは異なるデザイン感のUIになっています。普段仕事ではiPhone、プライベートではWindows Phone7とそれぞれの世界観があるプラッ…

Androidでボタンのクリックイベントを拾う

Androidアプリの勉強中です。色々と書きたい事はあるのですが、仕事が多忙すぎててわやです。。。今後のサンプルアプリを書く上でも外せないボタンのクリックイベントで処理を行う方法についてご紹介したいと思います。レイアウトはボタンだけのシンプルなも…

エントリーポイント(アプリ起動時に最初に表示されるアクティビティ)が定義されている場所

エントリーポイント(アプリ起動時に最初に表示されるアクティビティ)は、AndroidMainifest.xmlで定義されている。MainMenuActivityというactivity要素配下のintent-filter要素にactionとcategoryが定義されているのが判るでしょうか。

Androidで画面遷移を行う

// 画面遷移 Button camBtn = (Button)this.findViewById(R.id.captureButton); camBtn.setOnClickListener(new View.OnClickListener(){ public void onClick(View v) { Intent intent = new Intent( ); intent.setClassName("jp.softbuild.sampleApp", "jp…

でんせつのXPERIA Arcをてにいれたぞ

XPERIA Arcです。ようやく実機が手に入りました。REGZA Phoneも良いかなと思ってauショップでホットモックを弄っていたのですが、モッサリ感が否めない感じでした。予想に反してXPERIA Arcは思った以上にサクサク動いてくれます。Titanium Mobileで何か簡単…

T-01A(TG01)をAndroidとして動かしてみた

MonoDroid全然弄ってないなぁと思いながら仕事に明け暮れる日々です、こんばんわ。Windows Phone 7を弄り始めてからWindows Mobileに戻れなくなって久しいのですが、T-01AでAndroidが動くと聞いたのでちょっと試してみたいと思います。ちなみにWindows Mobil…

Android開発環境のインストール

Installing the SDK – Android にインストール手順が書かれています。 必要な事は全て書かれていますので熟読推奨です。 JDKのインストール Java SE Downloads へ行ってJDKをダウンロードします。 Androidアプリ開発をするのであれば、JDK5かJDK6を使う必要…

MonoDroid Betaの抽選に当たったでござる

どういうキッカケで応募したのか全く覚えてないのですが、当選しましたメールが来ていたので一気に導入してみました。『当選しましたメール』と書くとスパムの様だ。 Androidエミュレータが起動して、C#で書かれたアプリが起動されるのかと思いきや……起動し…

Desireでテザリング

遮蔽空間 X06HT DesireとPdaNetでティザリング(テザリング)PdaNetすごいなぁ。Windows MobileでいうところのActiveSyncっぽいね。