- 1. 今更だがAndroidでダークテーマを試してみる
- 2. Flutter環境構築 – 3(Android Studio・Androidエミュレータセットアップ編)
- 3. 眺めて覚える C# Xamarin (5) 音声認識
- 4. Navigation Component + BottomNavigationViewで、Fragmentを作り直さない(backStackから表示する)
- 5. 甥っ子のために簡単なスマホゲームを作ってみる
- 6. Androidで電卓アプリ作ってみた
- 7. Android Studioで更新がエミュレーターに反映されないときの対処法
- 8. @Parcelizeを使ってBundleに自作クラスをputする方法(Kotlin)
- 9. [Android]GoogleMap でスタートとエンドマーカーの線を引く
- 10. Wrap_ContentなTextViewに動的に長いテキストを設定して表示できない部分は…にする
- 11. [Android]Google Map でピン立てる
- 12. alsoを使ってインスタンスの初期化処理をスッキリさせる(Kotlin)
- 13. Androidの画像ロードライブラリ「Coil」のセットアップ&使い方(Kotlin)
- 14. Unityのモバイルゲーム向けセキュリティ関連覚書
- 15. Android端末とマイコン(mbed LPC1768)をシリアル通信した。
- 16. ReactNativeでTextInputがmultilineの時paddingVerticalが効かない
- 17. FlutterでFirebaseを使ってみる〜投票アプリ〜
- 18. スコープ関数の使いどころ(Kotlin)
- 19. Android – Decompiler APK
- 20. AWS Amplify Android を試してみる(Mac)
今更だがAndroidでダークテーマを試してみる
Android10でダークテーマが使えるようになりましたが、あんまり触ったことがなかったのでやってみました。
# 一旦DayNight Themeを実装してみよう
DayNight Themeを実装すると、デフォルトではダークモードの変更により画面に変化があるみたいです。
レイアウトにはConstraintLayoutとToolBarだけの状態にしました。| 基本 | ダークモード |
|:—————-:|:——————:|
||Flutter環境構築 – 3(Android Studio・Androidエミュレータセットアップ編)#はじめに
今回はFlutter環境構築第3弾 「**Android Studio・Androidエミュレータセットアップ編**」です!
Flutter SDKのインストール・Flutterコマンドのセットアップがお済みでない方は、
先に「Flutter SDKインストール編」をご覧ください。**Flutter環境構築シリーズ**
・[Flutter環境構築 – 1(Flutter SDKインストール編)](https://qiita.com/naru_chan__/items/359fcdfb8aa092e9a44e)
・[Flutter環境構築 – 2(Xcode・iOSシミュレーターセットアップ編)](https://qiita.com/naru_chan__/items/d64455cb7d0e7dd223a5)#「Android Studio・Androidエミュレータセットアップ編」でやること
本編では以下の項目を行います。– Android Studioのインストール
– Android Studioのセットアップ
– サンプルのFlutterアプリを実行
–
眺めて覚える C# Xamarin (5) 音声認識
# Androidの音声認識をプログラムしちゃおう!
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/274715/0909b41e-7cd7-7d53-1153-6ef4aa860a53.png)
###新しいプロジェクトを選択
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/274715/c921ca52-b0b8-48f0-be01-89c855ec7933.png)
# モバイルアプリ(Xamarin forms)を選択 次へ
### Android アプリでもできるけど例題がほとんどないモバイルアプリで作るね!
####モバイルアプリのほうが何となくシンプルだから!
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/274715/028f9dd9-bb9a-ed4b-c6de-583399
Navigation Component + BottomNavigationViewで、Fragmentを作り直さない(backStackから表示する)
# 背景
Navigation Componentを用いて、Single Activityのアプリを実現したい。
BottomNavigationとNavigationControllerとの連動は、よしなにしてくれて便利だが、画面切り替え時に度々Fragmentを作り直してしまう。。。# 解決策
Androidのarchitecture-components-sampleのプロジェクトから、NavigationExtensionのコードを拝借させてもらう。
https://github.com/android/architecture-components-samples/tree/master/NavigationAdvancedSample
# 使い方
Home, MyPageの2つのメニューがあるBottomNavigationを考える
1. BottomNavigationのmenuItemのidと同じ名前のnavigation graphをそれぞれ作る。今回は、home.xmlとmy_page.xmlを作成。
2. home.xmlには、Homeメニューから
甥っ子のために簡単なスマホゲームを作ってみる
#はじめに
甥っ子が4歳になりスマホの画面を適当にポチポチ触って遊んでるので、簡単で4歳児にもわかるゲームを作ってあげたいなと思って、勉強を兼ねて実際に作ってみることに。
とはいえ、androidアプリなんて作ったことないし、ましてやゲームなんて…調べてみたらCode for Funさん([【作って学べる】Android Studio ゲームアプリ開発入門](https://codeforfun.jp/android-studio-catch-the-ball-intro/))が大変わかりやすく環境構築から簡単なゲームを作る手順を解説していたので、これを見ながら勉強して作つくりました。
##出来たもの
出来たものは、ほぼCode for Funさんのと同じ玉取りゲームですが、少し改良を加え、スコアによって玉の動く速度を変えて、ある一定のスコアに達するとタップ一回ごとに玉の速度が若干早くなるという鬼畜仕様になっています。
追加の隠し要素としてランダムで流れてくる☆を取ると、15秒間ゲームオーバーになる黒いモヤットボール?の出現を止め、逆に高得点の赤玉の出現頻度が増えるというボーナス
Androidで電卓アプリ作ってみた
# 概要
シンプルな電卓アプリです。
Androidのお勉強用に作りました。Android Studio 3.6.2
TableLayout
![caluculation.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/566570/f84b198c-cb91-b52c-3ca6-80b0526cab06.png)# 苦労したこと
TableLayoutで行をまたいだボタンを作るところ。(+ボタン)バグ修正。
・小数点を連打できないようにする
・+-×÷=を連打できないようにする
・=ボタンクリック後の挙動いろいろ。## TableLayoutで行をまたいだボタンを作る方法
Table rowの中にLinearLayoutを入れ子にします。“`activity_main.xml
Android Studioで更新がエミュレーターに反映されないときの対処法
Android StudioからアプリをRunしたときに、編集した内容がエミュレータや実機に反映されないときの対処法です。下に書いてあるものほど面倒なので、上から順番に試すのがよいでしょう。
#まず確認すべきこと1
MainActivity.java(または.kt)の onCreateメソッドの中のsetContentView に正しいレイアウトが渡されているかを確認します。#まず確認すべきこと2
本当に変更が反映されていないのかを確認します。例えばonCreateの中にSystem.out.println(“test”)などを記述します。標準出力は
View -> Tool Window -> Logcat で見ることができます#(現在のバージョンでは削除)Instatnt Runをオフにする
File -> Setting -> Build,Execution,Deploymentにある、Enable Instant Run…のチェックを外す
これが原因のことが多いようですがAndroid Studio3.6.2ではその項目はありません。Instant Runの機能は
@Parcelizeを使ってBundleに自作クラスをputする方法(Kotlin)
## はじめに
Androidアプリ開発では、フラグメントやアクティビティ間で値を受け渡すときに `Bundle` を使います。
`Bundle` にはデフォルトで `String` や `Int` などの一般的な型しか入れられず、自作クラスは `Parcelable` を継承したクラスでないと入れられません。今回はかんたんに `Parcelable` を継承したクラスを実装する方法を紹介します。
## 環境
– Kotlin:1.3.61
## 実現方法
### ① `@Parcelize` を使う
Kotlin 1.1で追加された `@Parcelize` アノテーションを使います。
渡したい `data class` に `@Parcelize` アノテーションを付け、 `Parcelable` を継承することで、自動的に `Parcelable` を継承したクラスが生成されます。“`diff:MonsterEntity.kt
+ import android.os.Parcelable
+ import kotlinx.android.parcel.Par
[Android]GoogleMap でスタートとエンドマーカーの線を引く
# GoogleMap でスタートとエンドマーカーの線を引く
以下の手順となります。
・スタートとエンドマーカー作る
・Directions API実行
・polylines 作る
## スタートとエンドマーカー作る
[Google Map でピン立てる](https://qiita.com/myatthinkyu/items/6563ae9c53f7cfd14301)
## Directions API実行“`
interface DirectionsInterface {
@Headers(“Content-Type: application/json;charset=UTF-8”)
@GET(“maps/api/directions/json?”)
suspend fun getDirections(
@Query(“destination”) destination: String,
@Query(“key”) key: String,
@Query(“mode”) mode: String,
Wrap_ContentなTextViewに動的に長いテキストを設定して表示できない部分は…にする
# やりたいこと
高さがwrap_contentなTextViewに動的にテキストをセットして、長すぎて全文表示できない時にandroid:ellipsizeの設定を反映して…にしてほしい。
※maxLinesは機種ごと、端末の表示文字サイズ設定ごとに異なり、なるべく無駄なくたくさんテキストを表示したいので設定できないというとき。cf ) 何もしないと
以下のようなTextViewに何も考えず長いテキストをセットすると、…は表示されず表示できるだけ表示して、UI上では入りきらなかった部分はなかったかのようになってしまう。場合によっては最後の行は文字が下の方見切れたりする。“`xml
[Android]Google Map でピン立てる
# Google Map上で長押しからピンを立てる
以下の手順となります。
・長押しのイベントを取得
・Google Mapからピン情報を取得
・マーカー立てる## 長押しのイベントを取得
GoogleMap.OnMapLongClickListener を使いたいクラスから extends する“`
class MapsActivity : AppCompatActivity(), GoogleMap.OnMapLongClickListener {
mMap.setOnMapLongClickListener(this)
“`## Google Mapからピン情報を取得
“`
override fun onMapLongClick(point: LatLng) {
“`overrideメソットからもらった point(LatLng)からマーカー作る
“`
var marker = MarkerOptions().position(point).title(“目的地”)
“`## マーカー立てる
“`
private lateinit va
alsoを使ってインスタンスの初期化処理をスッキリさせる(Kotlin)
## はじめに
スコープ関数のひとつである `also` を使って、インスタンスの初期化処理をスッキリさせる方法を紹介します。
[私が投稿したスコープ関数についての記事](https://qiita.com/uhooi/items/e646a28cea5d916090a9)を先に読んでいただけると嬉しいです。
## 環境
– Kotlin:1.3.61
## インスタンスの初期化処理
### `also` を使わなくても問題はない
まず、 `also` を使わない処理を紹介します。
“`kotlin:△alsoを使わなくても問題はない
fun newInstance(columnCount: Int): MonsterListFragment {
val bundle = Bundle()
bundle.putInt(ARG_COLUMN_COUNT, columnCount)
val fragment = MonsterListFragment()
fragment.arguments = bundle
return frag
Androidの画像ロードライブラリ「Coil」のセットアップ&使い方(Kotlin)
## 「Coil」とは?
Android向けの画像ロードライブラリです。
## 画像ロードライブラリの比較
Android向けの画像ロードライブラリを比較しました。
||Picasso|Glide|Coil|
|:–|:–|:–|:–|
|最新バージョン|2.71828|4.11.0|0.9.5|
|最終リリース|2018/03/08|2020/01/09|__2020/02/09__|
|スター数|17,418|__28,772__|2,998|
|提供元|Square|Bump Technologies|Coil|
|特徴|Squareが提供している|スター数が多い|Kotlinファースト|※2020/04/17現在
CoilはPicassoやGlideよりスター数が少ないのですが、最終リリース日が最も新しく、Kotlinファーストに作られているため、選定しました。
選定後に読んだのですが、パフォーマンスを比較した記事を参考にするのもいいと思います。
https://proandroiddev.com/coil-vs-picasso-vs-glide-get
Unityのモバイルゲーム向けセキュリティ関連覚書
##免責事項
**この記事に記載されている内容を、実際に試して発生した損害に対していかなる責任も負いません(補償しません)。**
**すべて自己責任のもとで行ってください。**リリースされているアプリやゲーム、[ソフトウェア利用許諾契約(EULA)](https://ja.wikipedia.org/wiki/%E3%82%BD%E3%83%95%E3%83%88%E3%82%A6%E3%82%A7%E3%82%A2%E5%88%A9%E7%94%A8%E8%A8%B1%E8%AB%BE%E5%A5%91%E7%B4%84#%E3%83%AA%E3%83%90%E3%83%BC%E3%82%B9%E3%82%A8%E3%83%B3%E3%82%B8%E3%83%8B%E3%82%A2%E3%83%AA%E3%83%B3%E3%82%B0)やアプリケーション利用規約などでリバースエンジニアリングは禁止されています。
実際に試す場合は、自分で開発しているアプリやゲームや脆弱性確認用でリリースされているアプリやゲームを使いましょう。##はじめに
ハック(攻撃)と対策(防御)は表裏一体
Android端末とマイコン(mbed LPC1768)をシリアル通信した。
# 使用したライブラリとその導入方法
今回使用したライブラリは[usb-serial-for-android](https://github.com/mik3y/usb-serial-for-android) v2.2.1です。
早速ですが、これの使い方から躓きました。リファレンス(Readme.md)を読むと次のようにあります。
>### 1. Add library to your project:
##### Add jitpack.io repository to your root build.gradle:
“`xml
allprojects {
repositories {
…
maven { url ‘https://jitpack.io’ }
}
}
“`
>##### Add library to dependencies
“`xml
dependencies {
implementation ‘com.github.mik3y:usb-serial-for-android:Tag’
}
“`
ReactNativeでTextInputがmultilineの時paddingVerticalが効かない
## はじめに
割とピンポイントな内容ですが備忘録替わりに残そうと思います## 起こった問題
タイトル通りですが`ReactNative`でmultilineの`TextInput`を使っている際に、縦に中央寄せしたい機会があり、`paddingVertical`を使い、上下に同じだけpaddingを取る方法で実装しようとしたところ上手く動きませんでした。## 解決法
原因はわからないのですが(わかり次第更新します)単純にpaddintTopとpaddingBottomで上下に同じだけpaddingを取ると思った通りに縦の中央寄せを実現できます。
“`js:style
paddingTop: 10
paddingBottom: 10
“`
FlutterでFirebaseを使ってみる〜投票アプリ〜
自分の備忘録用記事です。
完成形
![sample.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/116581/5773ff0b-60b6-7dd0-09bc-1e45d07fc958.gif)下記の記事を参考にしてます。
https://codelabs.developers.google.com/codelabs/flutter-firebase/index.html#0
## Flutter projectの作成
まずはFlutter projectの作成。
今回はAndroid Studioメインで作成します。
(Flutterのプラグインは導入済みの想定。まだの人は[こちら](https://flutter.dev/docs/get-started/install)から)**Start a new Flutter project**をクリック。
## はじめに
Kotlinには「スコープ関数(Scope-Function)」という関数があります。
いくつか種類がありますが、どの関数も似ていて使い分けや使いどころがわからなかったのでまとめました。## 注意
私は業務でKotlinを使っておらず、iOSアプリ開発でSwift(スコープ関数がない言語)を使っています。
そのため、Kotlinをメインで使っている人とは考え方が異なると思います。スコープ関数を使い慣れていないため、考え方が変わることも大いにありえます。
## 前提条件
本記事を読むための前提条件です。
– Kotlinのスコープ関数を理解している
理解していない場合、[公式ドキュメント](https://kotlinlang.org/docs/reference/scope-functions.html)をご参照ください## 環境
– Kotlin:1.3.61
## 結論
まず私の結論を述べます。
– `with` ・ `run` ・ `apply` は使わない
– nullableな変数を処理したい
– 戻り値を使う → `
Android – Decompiler APK
You need two below tools.
https://github.com/pxb1988/dex2jar
http://java-decompiler.github.io/
AWS Amplify Android を試してみる(Mac)
[AWS Amplify iOSを試したい方はこちらを参照ください](https://qiita.com/ksato2032/items/f38830b8b6decc0cc936)
# はじめに
AWS Amplify Android を[Getting Started](https://aws-amplify.github.io/docs/android/start)にしたがってMacで試してみる。
以降の各章はGetting Startedに合わせている。# Prerequisites
以下の通り、Getting Started に記載されている手順は Mac でしか動作しない。Windows の場合、下の説明にあるリンク先の手順を実施する必要がある。
https://aws-amplify.github.io/docs/android/start#prerequisites“`
These steps currently only work on Mac. If you have a Windows machine, follow the steps on one