Android関連のことを調べてみた2020年05月08日

Android関連のことを調べてみた2020年05月08日

消えたRecylerViewのitemたち

こんにちは。

# はじめに
Androidアプリを作成していたら,
RecyclerViewのアイテムの個数が,自分の思ってた数よりも小さくなってしまう現象が起きたので記事にまとめておこうと思いました。

## 最初の状態
とりあえずRecylerViewで,バナーを100個ならべてみます。

“`kotlin:DebugActivity.kt
class DebugActivity : AppCompatActivity() {
private data class Banner(
val index: String?,
val title: String?
)

private var bannerArrayList: ArrayList = arrayListOf()

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
this.setCon

元記事を表示

FragmentのonCreateView()とonViewCreated()の使い分け

# はじめに
 **Fragment** の **onCreateView(LayoutInflater, ViewGroup, Bundle)** と **onViewCreated(View, Bundle)** の使い分けに関するメモです。

# 結論
 Fragment の onCreateView() と onViewCreated() をどのように使い分けるかについて、まずは結論から。

– androidx の Fragment を使う
[android.app.Fragment](https://developer.android.com/reference/android/app/Fragment) ではなく [androidx.fragment.app.Fragment](https://developer.android.com/reference/androidx/fragment/app/Fragment) を使う。[^1]

– onCreateView() は使わない
[onCreateView(LayoutInflater, ViewGroup,

元記事を表示

AndroidでKoinを使ってDI

Koinは使ったことあるが、Androidプロジェクトに初期導入したことがなかったので、やってみる。

## KOINとは

公式より日本語化して引用
> Kotlin開発者向けの実用的な軽量の依存関係注入フレームワーク。
>
>純粋なKotlinで記述され、機能解決のみを使用します。プロキシなし、コード生成なし、リフレクションなし。

https://start.insert-koin.io

## 導入

まずはbuild.gradleに追加

“`groovy:build.gradle
buildscript {
ext.koin_version = ‘2.1.5’

dependencies {
classpath “org.koin:koin-gradle-plugin:$koin_version”
“`

“`app/build.gradle
// Koin for Kotlin
implementation “org.koin:koin-core:$koin_version”
// Koin fo

元記事を表示

Flutter初見が5日間のハッカソンでアプリ開発してきた

## はじめに
この記事はコロナで外出自粛ムードの中、 `#おうちハッカソン` なるものでFlutterアプリ開発をしてきたのでその体験記になります。

自分 [@hohohoris](https://twitter.com/hohohoris)の簡単なプロフィールとしては、

– サイバーエージェント21年度入社予定
– Androidエンジニア
– プログラミングを初めて1年3ヶ月、Android以外のプラットフォームでの開発経験はない
– もちろんFlutter初心者

という感じです。

## おうちハッカソン

https://connpass.com/event/174573/

外出のできないGWにせっかくだからハッカソンしようじゃないかということで、インターン先でメンターをしてくれている [@at_sushi_at](https://twitter.com/at_sushi_at)さんが主催されていました。

自分も暇だったのと、複数人で開発する中期間のハッカソンに参加したことがなかったためこれを機に参加してきました。

そして、内定者先で一緒に出る人を募集したとこ

元記事を表示

Color#argbのAPI Levelでの使い分け

Color#argbでRequireLevelでの警告が出て対処したので備忘録

Call Requires API Level 26

“`
Color.argb(alpha: Float, red: Float, green: Float, blue: Float)
“`

それ以下

“`
Color.argb(alpha: Int, red: Int, green: Int, blue: Int)
“`

`Float`か`Int`かの違いですね

元記事を表示

Android 11 Labs Day 2 メモ書き

少し時間が空いちゃったけど、[Android 11 Labs](https://developersonair.withgoogle.com/events/android11labsjp) の Day 2 で気になったところだけメモ。
(Day 1 は[こちら](https://qiita.com/koichi-ozaki/items/77313a8c49c0b2c76367))

– ストレージのスコープ化についての最新技術情報
– Android 10 でストレージのスコープは導入されている
– Android 10 より前
– 外部ストレージへのアクセスはストレージのパーミッションがあれば OK だった
– 他のアプリの領域も読み書きできた
– Android 10 から
– セキュリティの観点から、他のアプリの領域は参照できなくなった
– ファイルの所有者がちゃんとわかるようになっている
– 強制ではなく、manifest になんか書けばこの機能をオフにできてた

元記事を表示

いい感じにステータスバーの色をアクションバーの色と合わせる方法(Android)

## はじめに

Androidでは、アクションバーの色を濃くしてステータスバーの色にセットしているアプリが多く見られます。

|Nintendo Switch Online|Trello|Instagram|
|:–|:–|:–|
|![EVm70iSUcAEwsn6.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/138245/81d261b6-6dfe-985e-4439-b83ba0e7e4f7.jpeg)|![EVm71buU4AA5jP-.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/138245/78bf2ca3-9e9f-8deb-cba6-94a7fb974ecb.jpeg)|![EVm711fVAAIQdP3.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/138245/61f22788-212b-837e-4

元記事を表示

【Android】初心者がJavaでタイマーアプリを作ってみた

ゴールデンウィークで暇な時間ができたので、JavaとAndroidについて勉強してアプリを作ってみました。
作ったのはタイマーアプリです。すごい簡単なものですが、JavaとAndroidを1から勉強したのでなかなか大変でした。
自分で入力した時間をカウントしてくれるというものですが、秒数でしか指定できません。
微妙な出来ですがとりあえず備忘録としておきます。

– 仕様
– 時間を自分で設定できる
– STARTボタンでカウント開始
– STOPボタンでカウントストップ
– カウント終了をバイブレーションで通知

– 環境
– windows10
– androidstudio3.6.3
– Java8

– ファイル
– MainActivity.java
– activity_main.xml

以下、コードです。

“`java:MainActivity.java
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.os.Count

元記事を表示

眺めて覚える C# Xamarin Forms(12) カメラ制御

#Xamarinを使ってスマートフォンカメラを制御します。
##空のプロジェクトを作成します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/274715/3b95bcd3-0913-1b33-aa92-b5c53426f22c.png)

##モバイルアプリを選択します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/274715/b5a27fb1-beee-2eeb-0dd6-125be138bcf6.png)

##プロジェクト名を指定して作成

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/274715/e6487bb4-6e84-5033-e966-57f9157345d8.png)

##空白を選択してOK

![image.png](https://qiita-image-s

元記事を表示

おうち時間にWEBエンジニアがFlutter触ってみた(環境構築)

#はじめに
おはようございます。こんにちは。こんばんは。
今回は **#おうち時間** 家にいても何もすることがないのでFlutterでアプリ作って遊んじゃおう。と思いはじめました。
始める前に環境構築していきましょう。

#Flutterとは
Flutter は、Googleによって開発されたフリーかつオープンソースのモバイルアプリケーションフレームワークである。
FlutterはAndroidやiOS向けのアプリケーションの開発に利用されている。

#今の環境

– macOS: 10.15.4
– Android studio: 3.6.3
– Xcode: 11.4.1

#環境構築
[https://flutter.dev/](https://flutter.dev/)にアクセスして**Get Started**をクリックして下さい。
Flutter_-_Beautiful_native_apps_in_record_time.pngfindViewByIdの速度検証

# はじめに
最近Android開発を触り始めました。
findViewByIdを使用する事でviewを取得できますが、調べてみると繰り返し処理の中でfindViewByIdを何回も繰り返す事は処理速度的にあまりよくないとのことだったので検証してみました。

# なぜ処理速度的にあまりよくない?
findViewByIdはviewの階層の上から順に検索していくため、階層が深いほど処理時間がかかる。

“`activity_main.xml

PythonサーバからAndroidにpush通知する

# 記事の趣旨

[前の記事](https://qiita.com/nk5jp/items/7b7c1e70bde457041bd3)でとりあえずpush通知のひな形は作れたと思うので,今度はその通知をFirebaseコンソールではなく,自分のサーバを起点として発出してみようという記事.

サーバはAWS上に立てたCentOS7を使用する.使用言語は何でも良いと思うがとりあえずPython3.7を選択.Pythonおよびpipは既にインストールされている前提とする.

## 1. 通知メッセージの送信手順

通知だけでなく,そこで送った情報をトリガとしてクライアント側に色々やらせたいところだが,まずはその辺りは抜きにして,シンプルに通知だけを送ることを目指す.

### 1.1 Firebase Admin SDKの追加

Firebase Admin SDKとは,サーバとFirebaseとの対話を仲介してくれるツールという理解で良いと思う.今回は使用言語としてPythonを選択しているので,Firebase Admin Python SDKをインストールすることになる.これを[こちら

Flutter+Android4.4(Kitkat)でクラッシュする件の対応策

# 現象

Android4.4(Kitkat)の端末にFlutterアプリをビルドしてインストールしたところ、splash後にクラッシュする。

# 環境など

|ツールなど|バージョンなど|
|:–|:–|
| MacBook Air Early2015|macOS Mojave 10.14.5|
|Android Studio |3.6.1|
|Java |1.8.0_131|
|Flutter|1.12.13+hotfix.5|
|Dart |2.7.0|
|Xcode |10.2|

# クラッシュログ

debug起動した際のクラッシュログです

“`console
E/flutter (10422): [ERROR:flutter/shell/platform/android/platform_view_android_jni.cc(39)] java.lang.SecurityException: uid 10290 does not have android.permission.UPDATE_DEVICE_STATS.
E/flutter (10422):

元記事を表示

ArrowsM03(Android)の通知(電話、Lineなど)をiPhone(iOS)へ通知する方法

####作成経緯
スマホ2台持ち(ArrowsM03、iPhone11)でスマートウォッチ購入検討。
安価なスマートウォッチは2台のペアリングができない?
「PebbleTime」ならAndroidとiPhoneの同時接続する手順を見つけたが安くない。
ならばArrowsM03の通知をiPhone11へ通知。
その通知をiPhone11とペアリングしたスマートウォッチで受信。
####懸念事項
IFTTTの通知をスマートウォッチで受信できるか!
ここ大事ですが… 事前検証ができない^^;
####閑話休題 作成方法
![i01.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/145508/19862afc-50ca-9c51-d266-ae942ef027cc.png)
![i02.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/145508/6aa92b07-b6a2-e87c-805d-4b946f466406.png)

元記事を表示

Kotlin でも MediaPipe の MultiHandTracking を動かしたい

Kotlin で MediaPipe の MultiHandTracking を利用しているサンプルが無さそうだったので作ってみました。
プログラムは [GitHub](https://github.com/machidyo/MediaPipeHandTracking) に上げてあるので、よかったら参考にしてください。

こんな感じで動きます。
![mutli_hand_tracking_sample.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/506075/65813178-202d-5b69-802b-d7ef0f78b593.gif)
# 作ったと言いながら
元々は[こちら](https://github.com/google/mediapipe/blob/master/LICENSE)の Java のコードを Kotlin に移植したものになります。Kotlin をある程度知っている人なら特に苦労することなく移植できると思います。(自分は素人に毛が生えたようなものなので小一時間ほどは浪費しまし

元記事を表示

【Kotlin】ViewPager vs ViewPager2

最近 `ViewPager` を使う機会があったので調べたことを備忘録として記事にします。
AndroidXに移行すると `ViewPager2` というViewPagerの改良版が使えるので2つについて書いていきます。

公式のドキュメントはこちら↓↓
[ViewPager](https://developer.android.com/reference/androidx/viewpager/widget/ViewPager?hl=en)
[ViewPager2](https://developer.android.com/reference/androidx/viewpager2/widget/ViewPager2?hl=en)

実装方法だけ知りたいよという方はこちらの記事が参考になるかと思います。
[Kotlinでアプリを作ってみる(TabLayout,ViewPager,Fragment,FragmentPagerAdapter)](https://qiita.com/nanamama/items/93ebd9c6a2732cb49777)
[ViewPager2 + Tab

元記事を表示

FlutterアプリをCodemagicでCDしてみた(Google Playストア)

FlutterアプリをGooglePlayストアコンソールに登録しました。
まだクローズドアルファ版ですが、公開してからやはりちょこちょこと修正したい箇所が発生して直しています。

しばらく、手動でリリースをチクチク作成していたのですが、ふと気付きました。

CodemagicでCD出来るじゃないか!

ということで、CDする場合の手順をまとめました。

# CDってなに?

CD = Continuous Delivery = 継続的デリバリー

つまりリリース作業を自動化しましょうってことです。

CIは、継続的インテグレーションで、これはテストまでの開発プロセスを自動化しましょうってことでした。

リリースは怖いからいくつもチェック表を見ながら人が作業して・・・
というのがほとんどだと思いますが、チェックしても人の作業にミスは付き物。だったら自動化すれば良いじゃ無い?

ということで、そっちを自動化するのが、CDの方です。

Codemagicへは、すでにtagトリガーなどで動くワークフローがあるものとします。
([こちらの記事](https://qiita.com/kasa_l

元記事を表示

[Kotlin]Firebase Cloud Messagingの実装

# はじめに
– プッシュ通知の実装

# 画面
Firebase ConsoleのCloud Messaging

コンソール上で各項目を設定してプッシュ通知を送信できます。

スクリーンショット 2020-05-05 14.10.11.png

今回は “テスト メッセージを送信” にて単一端末に対してプッシュ通知を送信します。
スクリーンショット 2020-05-05 14.10.39.png

Activityは何もない画面

元記事を表示

AndroidからXMLデータ形式のWeb APIを使う

# 概要

近年ではWeb APIのデータ形式といえばほぼJSONが使われていますが、最近XMLを使う機会があったので、そのAndroid実装についてメモを残しておきます。

# 要件

今回、実装に当たって以下のような要件で考えていました。

* Androidで動かす
* Kotlinで実装する
* Retrofit2から利用する (Converter.Factoryが必要)
* Converterのコードとか書きたくない

つまるところ、最近のよくある実装と同じ書き方で楽に実装したかったということです。

# ライブラリ

XMLシリアライザの有名所としては[SimpleXML](http://simple.sourceforge.net/home.php)があり、Webを調べるとよく名前が挙がります([GitHub](https://github.com/ngallagher/simplexml))。[Converterもある](https://github.com/square/retrofit/tree/master/retrofit-converters/simplexm

元記事を表示

React Native BLE Major/Minor取得

# はじめに
前回の記事(https://qiita.com/yokobonbon/items/f17bac71e9ba02a713ac)
でReact NativeでBLEペリフェラルのスキャンを実現しました。今回はそこから、iBeaconのMajor/Minorデータ取得します。

# Manufacture SpecificとiBeacon
以下のページが参考になります。
https://fabo.gitbooks.io/bledocs/content/nordic/beaconadvdata.html

iBeaconはUUID + Major(16ビット) + Minor(16ビット)で一意な端末を識別しますが、その情報は、BLE Advertised PacketのManufacture Specificデータの中に含まれます。Majro番号は25,26バイト目に格納され、Minor番号は26,27バイト目に格納されます。

Manufacture SpecificデータはBleManagerDiscoverPeripheralにおいて、advertisingの中のmanu

元記事を表示

OTHERカテゴリの最新記事