2015 - 12 - 23 API Level 19以降でAlarmManagerが辛かった話 Android Android の話です. API Level 19以降でAlamManager( AlarmManager | Android Developers )が辛かった話になります.先に自分なりの結論を示しておきます. set, setReapitingは API Level 19以降では不正確 setExactも秒単位の処理ではかなり微妙 java .util.Timerで秒単位の処理を一応実現できた 開発環境 IDE : Android Studio 1.3.1 デバッグ 機:Nexus 5X( Android 6.0.1) SDK Version:22 作りたかったもの バスの発着時間をカウントダウンする ウィジェット を作りました.やりたいことは、 先発のバスの発着時間をカ
こんにちは!杉谷と申します。 セプテーニグループのセプテーニ・オリジナル社とコミックスマート社のCTOを務めています。 AndroidがKotlinを正式サポートというニュースが駆け巡っています。 同じJVM系のScalaはどうなの?Androidで使えるの?と思われた方もいらっしゃると思いますが、 実は GANMA!のAndroid版はScalaで作られています。 GANMA!はダウンロードも600万を超え、Google Play上でも高評価を頂戴しておりますので開発実績としては十分な物かと思われます。 本エントリではScala Matsuri 2017やScala将軍達の後の祭り2017で配布したプライズ同人誌 「セプテーニ技術読本(2017)」のPDFと、その中で掲載された「ScalaでAndroid開発」をお送りします。 本稿は2017年2月に配布されたプライズ同人誌 《セプテーニ
Javaでプログラムを組んでいると、StringからInputStreamに変換したり、逆に、InputStreamからStringに変換を行う必要があることがあります。 特に、ライブラリを利用していて、そのライブラリの関数の引数の型に合わせなければならないシーンで良く使うTipsですね。 最近は、Webサービスを利用することが多く、その戻り値をxmlで解析する場合には、パーサの引数がInputStream型だったり、それをデバッグ用にString型に変換したりするのに多用しています。。 BufferedReader br = new BufferedReader( new InputStreamReader(is)); StringBuilder sb = new StringBuilder(); String line; while ((line = br.readLine()) !=
Google Maps Android API で地図画面を現在地に固定したいです。 スクロールの禁止をするまでは問題ないのですが、ピンチ操作でズームをする際や画面を回転する際に中心がずれてしまいます。 やりたいこと 回転操作を以下の画像のようにすると、△が中心になって画面が回転するので、 画面上のどこで回転操作をしても☆(現在地)を中心に画面が回転するようにしたいです。 ズーム操作の場合も画面上のどこをピンチしても、☆を中心に画面が回転するようにしたい。 現状はピンチ操作をした箇所を中心にズームされてしまいます。 他のアプリに例えるとIngressのように地図画面を固定したいですが、Google Maps Android APIで可能なのでしょうか。 以下は現在のコードです。 java package hoge.hoge.hoge.map; import android.Manifest
Google Play Services のAPIを使う上で必須となる GoogleApiClient の接続/切断を自動で管理できる設定があったことに気づいたので、実際に使ってみました。 Activityクラスなどから GoogleApiClient を使用する時、#onResume() で接続し、 #onPause() で切断するようなコードを書くかと思います。 自分は今まこのようにしていましたが、改めて GoogleApiClient のドキュメントを見ていたらこのように書いてありました。 You should instantiate a client object in your Activity's onCreate(Bundle) method and then call connect() in onStart() and disconnect() in onStop(),
Awareness API の用途 上記の情報を取得できることから、ユーザーを取り巻く環境に反応してアプリの挙動を変えるときに有効と思われる。 例えば、 くるまでドライブ(Activity)してて、 特定のお店の近く(Location/Place)を走っていたとき、 そのお店が営業中(Time)だったら、 リマインドを促す。 みたいな。 Awareness API の魅力 インターフェースがシンプル 上記の挙動を実装する場合、旧来だと、主に次のような API を駆使して実現していた。 それぞれの API を呼び出す実装を、更に組み合わせてごにょごにょする... 実装コストとしてはかなり高め。 それを解消するのが Awareness API 。 Awareness API は直感的なインターフェースの API なので、実装コストは旧来より格段に下がってる。 // 「ドライブ開始」の条件設定.
Android Studioの標準フォーマッタは結構賢くて、お任せしてもそこそこいい感じにフォーマットしてくれます。 ただ、フォーマットしてほしくない箇所もあったりしますよね。SQL文を組み立ててるところとか、ワンライナーとか。 そんなときはAndroid Studioの設定を弄ってフォーマッタを局所的に無効にしましょう。 File → Settingsを選択して設定画面を開くEditor → Code Styleを開く中ほどにあるFormatter Controlを以下のように設定するEnable formatter markers in commentsにチェックを入れるMarkers欄『Formatter off:』に『@formatter:off』を入力『Formatter on:』に『@formatter:on』を入力設定画面 この設定をすると、以下のようなコードがフォーマットさ
Android6.0からパーミッションチェック行なわなきゃいけなくなった系のやつ。 パーミッションチェックする際に以前書いたこれをいちいち書くの面倒だなって調べたらパーミッションチェックのライブラリがあった。if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { // permissionが許可されていない場合 if (checkSelfPermission(android.Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) { isPermissionOk = false; // 許可ダイアログで今後表示しないにチェックされている場合 if (!shouldShowRequestPermissionRationale(Mani
DialogFragmentを継承した独自クラスを作成し、ボタンをタップしたときにshowメソッドでdialogを表示させる実装をしていたのですが、ボタンをタップしてすぐにViewの切り替えを行ったとき、 Error Can not perform this action after onSaveInstanceStateこのようなエラーが出るようになってしまいました。 この場合、 SampleDialogFragment dialog = new SampleDialogFragment(); dialog.show(getSupportFragmentManager(), "sampleDialog"); こちらではなく、 SampleDialogFragment dialog = new SampleDialogFragment(); FragmentTransaction ft =
はじめに Androidでは、アプリが必要な権限を持っていれば、アプリから端末の設定(一部)を変更することができます。 この仕組はアプリが必要とする機能を確実に使用するためには有用ですが、インストール時に設定変更権限が必要な旨がダイアログ表示されてしまい、ユーザから敬遠される恐れもあります。 また、端末設定の変更ロジックに問題があった場合、影響範囲がアプリだけに収まらなくなります。 Androidでは上記のようなアプリから直接設定を変更する方法の他に、設定アプリの各画面へ簡単にアクセスする方法も提供されています。 android.provider.SettingsクラスにはAndroidの各機能設定画面を呼び出すIntentのActionが定義されており、遷移先の設定画面でユーザ自身に必要な設定を行わせることができます。 この場合には自アプリには権限が必要ないため、インストール時の敬遠リス
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く