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

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

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**をクリック。

スクリーンショット 2020-04-15 17.35.45.pngスコープ関数の使いどころ(Kotlin)

## はじめに

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

元記事を表示

【ReactNative】react-native-mapsを導入する

# はじめに
ReactNativeでアプリを作る過程で地図を表示させたくなったので、`react-native-maps`を導入しました。
インストール自体は簡単ですが、`GoogleMap`を使う場合はちょっとだけ手間がかかったので備忘録として。

# 環境

“`
“react-native”: “0.61.5”,
“react-native-maps”: “^0.26.1”,
“`

# 料金
GoogleMapは使用量によって値段が変動します。
だいたいアプリにマップを表示させるとなると、`Dynamic Maps`を使うと思いますが、2020年4月現在は下記のような料金となっています。

参考:[https://cloud.google.com/maps-platform/pricing?hl=ja](https://cloud.google.com/maps-platform/pricing?hl=ja)

スクリーンショット 2020-04-15 22.15.14.pngMacにReact Nativeの環境を構築する手順

`2020-04-15`時点の手順です。

# `Xcode`をインストールする

`App Store`より検索してインストールする。

# `Xcode`のライセンスをAcceptする

“` bash
$ sudo xcodebuild -license accept
“`

# `Android Studio`をインストールする
[Android Studio](https://developer.android.com/studio?hl=ja) からダウンロードしてインストールする。

# `Android SDK`をインストールする

`Android Studio`を起動する。起動時に自動でインストールされる。

# `Node.js`をインストールする

ここでは`nvm`を利用してインストールする。

## `nvm`のインストール

“` bash
$ curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.11/install.sh | bash
“`

## ログイン時に`nvm

元記事を表示

ScrollView配下のExpandableListViewが展開できない

# 概要

折りたたみ式のViewを作りたいときにたまーに使う[ExpandableListView](https://developer.android.com/reference/android/widget/ExpandableListView)ですが、ScrollView配下にあるとうまく展開されず

parentとchildそれぞれのadapterにデータが正常にセットされているのに・・・

原因はListViewを継承しているので、これ自身がスクロールすることが可能
そのため、スクロールできるものにスクロールできるものが入るのが落とし穴というわけでした・・

`ScrollView in ListView`とかでググるとまさにこの問題が多く出てくるのですが、今回はExpandableListView自体にスクロールさせる必要は皆無であったため、スクロール自体をなくす方向で修正

# 実装

“`kotlin
class NonScrollExpandableListView : ExpandableListView {

constructor(context:

元記事を表示

共創プラットフォームアプリ「Blabo!」をFlutterでフルリプレースしました

# はじめに
こんにちは、Blabo!でモバイルエンジニアをしている@youmeeeです。
今回は、弊社の共創プラットフォームサービスである「Blabo!」のiOS/AndroidアプリをFlutterにてリプレースしたので技術的な話や、リプレースを通じての所感などを書き記していこうと思います。

Blabo!のFlutterリプレース版は各OSこちらからインストールできます。

iOS版:
https://apps.apple.com/jp/app/1174269704
Android版:
https://play.google.com/store/apps/details?id=bo.bla.app&hl=ja

# Flutterとは

FlutterとはGoogleが提供するクロスプラットフォームSDKです。
2018年にStableリリースが発表され、最近サービスでの導入事例もじわじわと増えてきている印象です。
2019年にはWebサポートも発表され、今最も注目されているクロスプラットフォームSDKと言っても過言ではないと思います。

[Flutter公式ページ](https

元記事を表示

[Android]ディープリンクへの対応手順

# ディープリンクへの対応手順

## 以下の手順となります。

**マニフェストを設定 1**

“`kotlin






“`

applink_1.</p></blockquote>
</blockquote>
<aside class='widget widget-post'>
<div class='tag-cloud-link'>Java</div>
<div class='tag-cloud-link'>HTML</div>
<div class='tag-cloud-link'>Android</div>
<div class='tag-cloud-link'>Kotlin</div>
<div class='tag-cloud-link'>AndroidStudio</div>
</aside>
<div><a style='width:100%;' class='btn__link' href='https://qiita.com/myatthinkyu/items/872a2f4713befdffafcf'>元記事を表示</a></div>
</div>
      </section>
	        
      
      
      
	        <!-- 記事下シェアボタン -->
        <aside>
<ul class=

  • OTHERカテゴリの最新記事