テック-Android

Android nendの本番広告設定にハマる

nendの広告枠の承認を頂いたので、Androidアプリに設定を行っていた。 SDKの組み込み自体はマニュアルを見ながら簡単に行え、テストAdの表示まで順調に完了できた。 ところが、本番用のapikeyとspot idに差し替えてみたところ、広告表示が行われない... で、…

Android WebViewの広告表示を制限する

概要 WebViewでロードしたページの広告表示を制限する Hacking up an ad blocker for Android | Ha Duy Trung’s Blog こちらのページを参考に実装を行った。 ミュートする広告配信ホスト一覧の取得 https://sites.google.com/site/hosts2ch/ja より日本国内…

Google Playチームから虚偽の振る舞いに関する回答が来た

質問をしてから半日ほどですごく丁寧な回答が来ました。 こういった実装をしていた で、どういった内容の違反だったかと言うと、僕のアプリの場合、ActionBarに敢えてテキストを非表示にする処理を施していたんだけど、ご存知の通り、ActionBarに表示するデ…

今度は別のアプリがまたGoogle Playから削除された

昨日のアプリ削除対応から束の間、またGoogle Playより別のアプリ削除のメールが届いた。 今度は虚偽の振る舞いに関するポリシーに違反していると判断されたため、Google Play での公開が停止され、削除されました。とのこと。 で、今回はアプリ停止という状…

Google Playからポリシー違反でアプリが削除された話し

突然、こーんなメールがGoogleより届いた After review, FF14タイムズ, packagename, has been removed from Google Play because your app title violates our impersonation policy. This app won’t be available to users until you submit a compliant u…

Android ホームランチャーアイコンの作成

最近のOSでは丸型のランチャーアイコンなんかにも対応しているらしく、全サイズのランチャーアイコンを作成するのは、Image Assetを利用するのが便利。 利用の仕方は簡単で、ランチャーアイコンとする背景透過のPNGを用意する。 Foreground Layerを選択してA…

Android WebViewにアメブロブログの画像を表示する

AndroidのWebViewでアメブロブログの画像が出ない問題。 どうやらアメブロはブラウザのDomストレージにアクセスしているようで、WebViewにストレージアクセスを設定しておく必要がある。 エラーログ Uncaught "TypeError: Cannot read property 'getItem' of…

Kotlin 日付の計算

都度ググってしまうのでここにメモしておく。 日時の加算、減算 Calendarクラスを使用する。 この例では7日前をDateオブジェクトで受け取る。run{}を使うとすっきり書ける。 val prev_week:Date = Calendar.getInstance().run { add(Calendar.DATE, -7 ) //7…

Kotlin Listの中の特定の値を持ったオブジェクトをfilterする

多分、みんなListの中にオブジェクトをぶち込んで利用することが多いと思う。 Listの中の特定のオブジェクトをいくつかfilterしたい場合とかどうやってるのかなあ...と思った。 こんな感じで書いたんだけど果たして... この場合はmuteListの中に含まれるオブ…

Android ViewPagerで表示されたFragmentによって、ActionBar Itemの表示を切り替える

ViewPagerで表示されているFragmentによって、不要なActionBar Itemがある場合に非表示とする。 Itemオブジェクトの保存 MenuItem生成時に表示制御を行いたいItemをメンバとして記録しておく。lateinitで宣言すると、ViewPagerに渡した時にまだ初期化されて…

Android Fragmentの中にSupportMapFragmentを配置する。

例えばViewPagerに配置したFragmentに地図を配置したい場合などなど。 そのままFragmentのレイアウトにベタっとSupportMapFragmentを配置して、

Android MapViewを利用する

APIキーの取得 MapViewを利用するには予めAndroid用GoogleMapのAPIキーを取得しておく必要がある。 Google Cloud PlatformでAPIキーの取得を行っておく。 プロジェクトを作成後、APIとサービスを有効化からMaps SDK for Androidを選択すれば良い。 プロジェ…

俺のイカれたアプリメンバー達を紹介するぜえ〜 個人開発で毎日1アプリをリリースして1週間経った感想

まずはFFIVタイムズ! play.google.com これは作者自身もプレイしてるオンラインRPG、FF14というゲームのアンテナアプリだ。 自身もiPhoneのFF14のアンテナアプリ使ったりするんだけど、広告が邪魔だったり、サムネが重かったりしてギガ食いそうだから不満部…

最新バージョンのライブラリがAndroidXのサポートライブラリに依存する

現在の導入手順に従って、最新のfirebase-coreのライブラリ implementation 'com.google.firebase:firebase-core:17.0.0' を入れると、利用しているSupport Library次第ではAndroidXのSupport Libraryが必要と叱られます。 manifest merger failed : attribu…

The number of method references in a .dex file cannot exceed 64K.

開発中のビルドは問題なく通ってたのですが、ストア公開用の署名付きビルド作成時にこういったエラーが発生し、ビルドが失敗しました。 Error: null, Cannot fit requested classes in a single dex file (# methods: 71451 > 65536) The number of method r…

Androidアプリ FF14ブログアンテナアプリをリリースしました

FFXIVのブログアンテナアプリ、FF14タイムズをリリースしました。Android端末をお持ちのFF14プレイヤー様は攻略やプレイヤーの交流に是非、お役立て頂ければ幸いです。 play.google.com 同様のアンテナアプリはいくつかあって、電車の中等でよく利用するので…

VisibilityAwareImageButton.setVisibility can only be called from within the same library group

floatingActionButtonを floatingActionButton.visibility = View.INVISIBLE のようなことをすると、 VisibilityAwareImageButton.setVisibility can only be called from within the same library group (groupId=com.android.support) less... (⌘F1) Inspe…

Android インターネット上の画像をImageViewで表示するのはGlideが便利

インターネット上に置かれている画像ファイルをダウンロードして表示するにはGlideが便利。 簡単な記述で接続からファイルダウンロード、描画、キャッシュの管理まで行ってくれます。 github.com 導入 app/build.gradle implementation 'com.github.bumptech…

Android RecyclerView & CardViewのonClickイベントにハマる

昨日、RecyclerViewのクリックイベントがどうしても取得できずハマってしまったのでメモしておきます。 RecyclerView onClickイベントの基本系 Layout RecyclerViewの中のitemを以下のようなレイアウトにした場合、

Android ViewのZ軸、重なりの高さを管理する

RecyclerView & CardViewの上にprogressBarを表示しようとした時、CardViewが最前面に表示されprogressBarがCardViewの下に潜ってしまうケースがある。 ViewのZ軸高さの設定 android:elevationでZ軸の高さを設定する。他Viewにandroid:elevationの設定がない…

Android TabLayoutとViewPagerでスワイプ連動タブ制御

よくあるこういったUIのやつ コンテンツ部分を横スワイプでタブが左右に切り替わる 使用するコンポーネント ViewPager スワイプに応じてページングされたFragmentを生成し、自動でアタッチする。 TabLayout TabのUI表現及び、リスナーを管理する。また、生成…

Kotlin 戻り値をジェネリクスとした抽象メソッドの定義と実装、TemplateMethodの応用

APIで取得したJsonデータをパース、Modelメンバにパースした値をセットしてオブジェクトを返す。という処理をtemplate method的な固有実装のみサブクラスに実装したかったので勉強しました。 クラス関係 //ジェネリクスは継承先のクラスが指定する open abst…

Android 処理中インジゲーターを表示する

導入 ProgressDialogはdeprecatedになったので、ProgressBarを使用する <ProgressBar style="?android:attr/progressBarStyle" android:id="@+id/progressBar" android:layout_width="wrap_content" android:layout_height="wrap_content" android:visibility="invisible" /> style="?android:attr/progressBarStyle"でくるくる回るインジゲーターや横棒の進捗バ…</progressbar>

Android ViewにPull to Refreshを導入する

導入 android.support.v4.widget.SwipeRefreshLayoutを使用する。 サポートライブラリを指定せず、<SwipeRefreshLayout></SwipeRefreshLayout>と記述すると、Error inflating class SwipeRefreshLayoutとなり、ビルドは通るがXMLパースでコケる。

Android OSSライセンス画面をPluginで自動表示する

Androidアプリ開発自体、Apache License 2.0 のOSSを使用して開発を行う為、インクルージョン表記や帰属表記が必要。 こちらを使うと簡単に使用ライブラリがリスト化されたActivityを生成できます。 github.com 導入 Add the Gradle plugin project/build.gr…

kotlinの無名関数、無名クラス、クロージャーとラムダ式

いつも、あれ?どうやって書くんだっけ?と都度ググっているので整理したことをメモ。 無名関数 基本 宣言と同時に関数オブジェクトに val func1 = fun(data:Int):Int{ return data } func1( 1 ) 宣言済みメソッドを関数オブジェクトに fun returnInt(data:I…

All com.android.support libraries must use the exact same version specification

Androidアプリにadmobの広告を入れようとして、build.gradleに implementation 'com.android.support:appcompat-v7:27.+' implementation 'com.google.android.gms:play-services-ads:17.2.0' と記述したら、ライブラリの中に27.1.1と26.1.0が混在していて、…

Android Viewのcorner radiusの定義

View自体のプロパティにradiusの設定はないので、shapeタグを使ってbackgroundに当て込みを行います。 shapeタグとは? 画像ファイルを使わずにマークアップでグラフィック表現が行える記述方式。 strokeでViewに枠線を入れたりpaddingでView内側の余白管理…

Kotlin varとvalの違い

var と val の違いとは? var : 再代入可能な変数(読み書き可能な変数) val : 読み込み専用の変数 以下のような操作を行った時、valではbuild errorとなります。 class Foo{} val foo = Foo() foo = Foo() //変数fooに再度Foo()インスタンス valについて い…

Android 怖くないRecyclerView

タイトルは釣りです。ごめんなさい。 昨日、ハマってしまったのでRecyclerViewについて整理したことをメモ。 RecyclerViewの最小構成 layoutファイル activiity_main.xml 画面幅一杯のRecyclerViewを配置