Android関連のことを調べてみた2022年12月02日

Android関連のことを調べてみた2022年12月02日

javaでスプレッドシート

現在AndroidStudioでアプリ開発をしています。その際に、javaを使用してAndroidStudio→スプレッドシート→AndroidStudioというようにデータを送りたいのですがどのようにすればいいかわかりません。
設定方法など細く教えていただけるとありがたいです

元記事を表示

ReactNative+ExpoでAndroidアプリをリリース

# はじめに
この記事は [Google Developer Student Clubs Japan Advent Calendar 2022](https://qiita.com/advent-calendar/2022/gdsc-jp) 2日目の記事です。
はじめまして!GDSC HitotsubashiのLeadをやっております、oreoです。
一橋大学法学部に在籍中で、エンジニアインターンではReactを使ったwebアプリ開発に参加しています。
個人では、GDSC Hitotsubashiに所属しているメンバーとReactNativeでモバイルアプリの開発もしており、先日Androidアプリをリリースしました。リリースする際にExpoが便利だと感じたので記事にしました。
# ReactNativeとは
Expoの説明に入る前にReactNativeの説明をします。
ReactNativeはモバイルアプリケーションフレームワークです。iOSとAndroidの両方で動作するクロスプラットフォーム開発が可能です。同じクロスプラットフォームアプリ開発のフレームワークとしては、Googl

元記事を表示

Android アプリの各通信処理を Retrofit に移行するためにやったこと

[N予備校 Android](https://play.google.com/store/apps/details?id=nico.ed.nnn.zane&hl=ja&gl=US&pli=1)チームの鎌田です。

N予備校 Android チームでは、アプリの各通信処理を[Retrofit](https://square.github.io/retrofit/)に移行しました。

本記事では、コード例を交えてこれまでの実装からどのように Retrofit に移行したかの経緯、移行にあたってつまづいたポイントについてまとめます。

また、Retrofit の細かい解説に関してはしませんのでご承知ください。

# これまでの実装

これまでは、OkHttp をベースにした独自の`ApiClient`クラスを作成し、以下のように実装していました。

“`kotlin:ExampleRepository.kt
class ExampleRepository(private val apiClient: ApiClient) {
fun postExampleInfo(id: Stri

元記事を表示

Android UnitTestでR.stringのテストを劇的に見やすくする

# 概要

Android で普通の Unit Test (Android Test/Instrument Test じゃない方のテスト) で R.string.xxx についての Assert を実行すると下記のような謎の数値のエラーになっちゃうんですよね。

“`kotlin:テストコード
val actual = hoge.getTextId()
assertEquals(R.string.xxx, actual)
“`

出力されるエラー:
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/29899/8ea79e11-6778-a335-43b7-8f1ca14a5655.png)

こうだしたいですよね:
“`
expected: but was:
Expected:R.string.xxx
Actual :R.string.yyy

java.jang … (

元記事を表示

Compose でパフォーマンスの高いレイアウトを作る

Jetpack Compose は「より優れたアプリを迅速にビルドする」というスローガンを掲げていますが、優れたアプリの重要な要素の一つが UI のパフォーマンスです。

この記事では、まず Compose と View のレイアウトシステムを簡単に比較して Compose の強みを説明し、それから Compose でパフォーマンスの高いレイアウトを作るコツを例を交えて紹介します。

## Compose のレイアウトシステムの改善

#### View のレイアウトシステムの問題点

1. View では一つのレイアウトを複数回測定(measure)することが許されていて、実際その状況に陥ることもよくあります。例えば、`LinearLayout` の `baselineAligned` はデフォルトで `true` なので、明示的に `baselineAligned` をオフにせずに `LinearLayout` 内で `layout_weight` を使うと子レイアウトが複数回測定されます。このようなレイアウトをネストする場合、測定回数が指数関数的に増える可能性があります。`Con

元記事を表示

「状態ホイスティング」の説明

## はじめに

本記事は [Android Advent Calendar 2022](https://qiita.com/advent-calendar/2022/android) の1日目の記事です。
1日目から空いていたので、急きょ埋めました。

状態ホイスティングについて説明します。

## 「状態ホイスティング」とは?

英語で「state hoisting」といいます。

状態をコンポーザブル(ビュー)の呼び出し元に移動して、コンポーザブル自体をステートレスにするプログラミングパターンのことです。

「表示する現在の値」と「値を変更するイベント( `(T) -> Unit` )」をコンポーザブルへ渡し、値を「コピー」するのでなく「移動」することで、信頼できる唯一の情報源を実現できます。

## 状態ホイスティングのメリット

TBD

## おわりに

急きょ書いたので、公式ドキュメントより中身が薄いです、、
後ほど編集したいと思うのでお許しください。

最初に状態ホイスティングを知ったときは感動しました。
私はiOSアプリ開発がメインなので、SwiftUIでも適用できな

元記事を表示

【Android】Drawableのxml上で画像にTintを適用

# はじめに
Drawableのxml上で画像にTintを適用する方法について説明。
例えば、`RadioButton`や`ToggleButton`など、`ImageButton`が使えない状況で前景と背景を合わせてDrawableを作成した際、レイアウト上でTintを行うと前景・背景両方とも適用されてしまう。そこで、前景のみTintを適用させる方法を説明。

# 概要
Drawableフォルダ内に作成したxml上で、``タグ内に`android:tint`を指定。

# 方法
例として、ToggleButtonで説明。
まず、`toggle.xml`に前景と背景を記述。
“`toggle.xml

元記事を表示

1年半で12個のサービスをリリースしてわかった個人開発に大切なこと

# 1, はじめに
私は私立文系大学に通う大学3年生です。
プログラミングを始めたのは大学に入学してからです。
「これから開発を始めようと思う人」や「個人開発をやっている人」に少しでも参考になれば嬉しいです。

# 2, どんなアプリを作ったの?
いくつか紹介します

### ShadowBird
TwitterのシャドウバンをチェックすることができるWebアプリです。

https://taishin-miyamoto.com/ShadowBan/

11月は月間150万PVでした。
![スクリーンショット 2022-12-01 11.24.50.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1745371/850d87b2-4821-2d7f-d494-8004a6b20197.png)
色々な国の方が使用しています。
![スクリーンショット 2022-12-01 11.28.24.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.

元記事を表示

AndroidでNavigationを使ったDeep Linkの実装Part1

# 初めに
今回から、Navigationを使ったDeepLinkの実装を紹介していこうと思います
### 本文
まずは、Manifestの書き方からです
`scheme`はその名の通りスキームを設定します。
何も書かなかった場合は`http`と`https`が適用されます
`host`には送られてくるurlの頭部分を指定します
`pathPrefix`はurlに含まれるパスを指定します。
指定のパスが含まれてない場合は無効になります。
完全一致で指定したい場合は`pathPattern`を使いましょう。
“`xml


元記事を表示

Ionic Frameworkを使ってモバイル画面の限られたスペースで複数のコンテンツを表示する4個の方法

この記事は、 [Ionic Framework / Capacitor / Stencil Advent Calendar 2022](https://qiita.com/advent-calendar/2022/ionic_jp) の1日目の記事です。

さて、モバイル画面を設計していると、モバイル画面の限られたスペースに複数のコンテンツパターンを詰め込むことに悩むことも少なくないと思います。ハンバーガーメニューを用意して、縦にずらっとメニューを並べるようなことをすればその悩みからは開放されますが、逆にユーザからするとメニューが多すぎて何をどう使えばいいかわからないUIになります。そこで、タブをベースにしたメニューの考え方についてまとめようと思います。

# 整理のステップ
## 1. コンテンツを最大5つに絞り込む

> Use the minimum number of tabs required to help people navigate your app. Each additional tab increases the complexity of your app,

元記事を表示

実務未経験者がAndroidアプリエンジニアとして転職するまでにやったこと

私はwebやアプリの受託開発企業でAndroidアプリを作っています

今の会社に転職してから約1年経つので、実務未経験でAndroidアプリエンジニアとして転職するまでにやったことをまとめておきたいと思います

## この記事を読んでほしい人
業務未経験でモバイルアプリ(Android)の自社・受託開発企業への就職を目指している方向けの記事です

ネットで調べると「業務未経験でweb系の会社に転職」という情報はたくさんヒットしますが、AndroidやiOSなどのモバイルアプリ開発になると、途端に情報が少なくなります

私も就職活動のときに、情報が少なくて何を勉強すればいいのかわからなくて苦労したので、この記事が役に立てば嬉しいです

:::note warn
転職市場やIT業界の動向、主流なプログラミング言語はその時々の状況によって変わるので、この記事はあくまで1つの具体例として参考にしてもらえればと思います
:::

## 自己紹介
私について自己紹介しておきます
前の仕事を退職してから、8ヶ月の無職期間でプログラミングを勉強して転職しました

**・前職を離職してから

元記事を表示

[Delphi] WorkArea / SafeArea / DisplayCutout に対応する

# WorkArea / SafeArea / Display cutout とは

iPhone ではカメラ部分にノッチ(切り欠き)があり(iPhone 14 でパンチホールになったけど)そのエリアを避ける事が推奨されています。
そして iPhone で味を占めたのか MacBook にもノッチを導入。
さらに iPhone に追随したいくつかの Android のメーカーがノッチを導入。
また、Windows でも TaskBar がある部分はアプリを表示できません。

ということで、どの OS でもアプリを表示できないエリアがあります。
その部分をそれぞれ WorkArea / SafeArea / DisplayCutout と呼びます。

|OS|呼び方|説明|備考|
|—|—|—|—|
|Windows|WorkArea|表示可能なエリア|TaskBarを除いた部分|
|macOS|SafeArea|表示可能なエリア|MacBook Pro 2021 よりノッチ対応|
|iOS|SafeArea|表示可能なエリア|全ての元凶|
|Android|Displa

元記事を表示

FlutterでHiveをいい感じに使う

# 基本実装

shared_preferencesを使っていたのだが、Hiveというpackageがあったのでこちらを使用してみました
shared_preferencesとは異なり様々な型が保存でき、速度も速いということで利便性はかなり高いかと思います

こちらが公式ページ

https://pub.dev/packages/hive

インストール用のコマンド
“`
flutter pub add hive
flutter pub add path_provider
“`

keyの管理をenumを使って行う
“`
enum HiveBox {
string,
int,
double,
bool,
dynamic,
listString,
map,
}
“`
Hiveを利用するためにインスタンスを宣言する
何度も取得する必要はないので起動時にでもinitializeHiveを読んであげればいいかと思います
また、Hiveには保存場所を指定することができるのでpath_providerを使用して指定します
“`
/// Hiveのインスタンス

元記事を表示

AndroidのPush通知でFcmpush gemを使ってみた

# はじめに
皆様、こんにちは!
佐久間まゆちゃんのプロデューサーの[@hiroki_tanaka](https://note.com/hiroki_tanaka)です。

最近、Railsアプリから送信しているAndroidアプリ向けのPush通知をGCMからFCMに移行しました。
その際に[fcmpush](https://github.com/miyataka/fcmpush)というFCM送信処理を扱うGemを使用したので、使い方を紹介させてください。

# 利用環境
– Ruby 2.7.2
– Rails 6.1.7

# FCM通知とは
FCMとはFirebase Cloud Messagingのことで、サーバからAndroidアプリにPush通知を送信できるようにするサービスです。
FCMを使用してPush通知を送信することで、ユーザーにアプリのアピールやイベント毎のお知らせなどを行うことができ、アプリへの再訪率や定着率の向上に繋げることができます。

FCMの前身としてGCMという通知処理がありましたが2019年4月にサポート終了しているため、2022年現在ではGCMの

元記事を表示

【個人開発】飲み会の後二次会会場を爆速で決定するiOS/Androidアプリ開発(Flutter)

モバイルエンジニアのEtsuwoです。

この度、Flutterを使用してモバイルアプリ開発を行いAndroid・iOSの両方に対応したアプリをリリースしました!
今までSwiftやKotlinを使用したアプリ開発の経験はありましたが、Flutterは**全くの初心者**なので0スタートです。
しかしこのFlutter、個人開発ではかなり使い勝手が良く、発案から2ヶ月・実装開始から1ヶ月程度という短期間で開発が完了しアプリリリースを行うことができました。

アプリ内容だけでなく、開発の流れや利用技術もざっくり記事にしています。
同じようにFlutterを使ってモバイル開発を考えている方に読んでいただけると嬉しいです。

# アプリ概要

この世の全ての酒飲みが経験したことあると思うのですが、

「二次会行きたいけどこの辺のいい感じの居酒屋知らんな…」
「この時間開いてる店どっかあったっけ…」
「しゃーなしでいつものとこ行っとくか…」

ってなることありませんか?
僕はこの寒空の下開いてる店を探すべくスマホをポチポチしてる時間が一番嫌いです。
でも二次会は行きたい。

この

元記事を表示

Android 端末で VPS に SSH 接続する

## 前提

* VPS が利用可能な状態であること

## 環境

* Termux
* Publisher: Fredrik Fornwall
* Version: 0.101
* Android
* Version: 12

## 実施

1. Google Play ストアから [Termux](https://play.google.com/store/apps/details?id=com.termux&hl=ja&gl=US&pli=1) をインストール
2. Termux を起動
3. 以下コマンドを順に実行

“`bash
$ pkg update
$ pkg install openssh
$ apt-get update
$ apt-get upgrade
$ ssh @
“`

元記事を表示

AAudioを簡単に使う方法

 今年の4月~、Androidスマホアプリのプログラミングに着手し、年明けにGooglePlayにリリースできるところまで漕ぎつけた。この開発を通じて、サウンド系やシューティングゲーム系アプリを、Android系のスマホ(GooglePixelなど)で作る場合、AAudioというAPIが必須となることがわかった。いわずもがな、iOS系のスマホ(iPhone)では不要だ。

 さて、AAudioとは、音の発音遅延を数十m秒レベルに短縮(低レイテンシ化ともいう)するものであり、(遅きに失した感はあるが)Androidバージョン8から導入された。これを使うにあたり、AAudioのテンプレートとでもいうサンプル(oboe)が公開され、これを下敷にすれば、当方のようにアプリ系プログラム初挑戦者でも、低レイテンシのアプリが楽に作れてしまう。

 このコラムでは、これからAndroidに挑戦される方に向けて、AAudioの簡単な使い方をまとめた。基本マニュアルは、やはりGoogle純正のサイトを教科書にした方がよい。ここには、アプリ開発ツールであるAndroidStudioのダウンロードの仕方から始

元記事を表示

UnityのAndroidビルドでAPIレベル31にしたらGradle地獄だった話

![スクリーンショット 2022-11-28 23.50.03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/72960/87726bf8-2669-0b39-c4f7-e1c7bfd40e1a.png)
いやなダイアログだ。思わずため息が出る。Unity Android開発者は何度このダイアログに悩まされることになるのだろう。
## 環境
Unity Editor: Unity 2021.1.6f1
Platform: Android
OS: macOS Monterey(12.6)
Target API Level: Android 11 (API Level 30)(当初)
## [前回](https://qiita.com/warapuri/items/9f9b4e293bf52c7cd6fd)のあらすじ

リリースだけ起こるバグに遭遇したが、ProGuardの難読化が原因だったことがわかった。
proguard-user.txtに追記して、難読化を回避することでなんとかProGuardの罠を潜

元記事を表示

AndroidでTextViewを点滅(blink)

# Androidでテキストの点滅って・・・簡単じゃなかった
今日、お客さんから
> 「ここの文字もっと大きくして、点滅させて目立たせたいんだよね・・・」

と言われたので、たぶん、TextViewのプロパティを1箇所ポチってtrueにすればできるんじゃないか・・・てノリで探してみたが・・・

**あれ? ない・・・**

blinkとかが付く名前のプロパティが無いのである。えー、文字の点滅もできないの?Androidでどうやってやるんだろう?と色々調べてみました。
# Animationを使う
どうやら、AndroidではAnimationという仕組みを使わないといけないらしいです。
参考URL
本家 Android developer [アニメーションの概要](https://developer.android.com/training/animation/overview?hl=ja)
本家 Android developer [アニメーション リソース](https://developer.android.com/guide/topics/resources/animation

元記事を表示

UnityのAndroidリリースビルドだけ起こったバグの話

## 環境
Unity Editor: Unity 2021.1.6f1
Platform: Android
OS: macOS Monterey(12.6)
Target API Level: Android 11 (API Level 30)(当初)
## リリースビルドだけ起こるバグ

UnityのAndroid版ゲームのビルドを作っているとき、Debugでは問題ないのだが、Releaseでビルドしたら進行不能バグに遭遇した。
logcatで内容を見てみると、いろんなことで以下の例外が出ている。

“`
E/Unity: AndroidJavaException: java.lang.ClassNotFoundException:
“`

「ClassNotFoundException」つまり、そのクラスが見つからないということ。しかし該当のファイルは存在するし、そもそもDebugでは問題なく動いている。

## 問題の洗い出し

どういうことかと調べたら、どうやら「ProGuard」という難読化ツールが名前を変更したから、らしい。
しかしそもそも「ProGuard」なんて

元記事を表示

OTHERカテゴリの最新記事