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

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

【Android】LiveDataでの初期化処理をEventで対応する

## 概要
ViewModel / LiveData / Observer を使用するとViewModelからのイベントを次のようにView側(Activity/Fragment)に通知することができます。

しかし、通常の実装では **一度だけ実行したい処理(Fragmentの遷移時等)に不都合** が発生する場合があります。

SampleFragmentでボタンクリック→ViewResultFragment遷移→戻るボタンでSampleFragmntに戻る

この様な状況では **SampleFragmentがObserveしているLiveDataの値が代入されているので再度ViewResultFragmentに遷移する処理が走ってしまいます。**

このような問題を解決するために今回はEventラッパークラスを作成して対応していくサンプルを作成したいと思います。

## 問題の挙動を確認してみる

ここでは簡単にボタンをタップするとViewModelでデータを取得後、次Fragmentに遷移し、先ほど取得したデータを表示するサンプルを作成します。

“`kotlin:S

元記事を表示

vistaでandroid studio その15

# 概要
vistaでandroid studio 1.0.1やってみた。
センサー使ってみた。

# 写真

![device-2022-09-04-065255.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/18104/1b235462-70db-be04-608f-b48eb5159da0.png)

# サンプルコード

“`
package com.ohisamallc.ohiapp154.ohiapp154;

import android.content.Context;
import android.content.Intent;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Path;
import android.hardware.Sensor;
import android.hardware

元記事を表示

【Android】画面を縦方向、横方向で固定する

# はじめに
今回はAndroidアプリ内で画面を縦画面、横画面でそれぞれ固定する方法を記事にします。
基本的に、指定がない場合は 端末を縦にすれば縦画面に、横にすれば横画面になるのがデフォルトです。
ですが、レイアウトやデザインによっては画面の回転に対応できないケースもあります。
そういった場合には、それぞれ指定してあげる必要があります。
# 指定方法
AndroidManifest.xml の manifest → application → activity に
”screenOrientation”
を追加します。

横画面に固定するには

“`

“`

縦画面に固定するには

“`

“`

また、縦横以外にも指定方法があるので表でまとめておきます。

|screenOrientationの値|説明|
|:—|:—|
|unspicified|デフォルトの状態、自動回

元記事を表示

【AndroidStudio】Kotlinでボタンに画像とテキストを表示する方法

AndroidStudioでボタンに画像とテキストを表示させたいときはButtonタグにdrawableStart等を使ってやれば,ボタンの中に画像とテキストを表示することができる.しかし元々drawableに用意していた画像を表示させたくなった時,画像が大きいと画像がボタンに収まりきらない.これは小さいサイズの画像を作ることで簡単に解決できるが,別の解決方法が知りたかった(画像を作るのが面倒だった)のでdrawableStart等を使わずに表示する方法を載せる.
# 完成イメージ
完成したときのイメージはこんな感じ.
![2022-09-04 (5).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2671458/612babec-90bc-cd1a-2a2f-b273e6cce09a.png)

# ボタンの見た目を作成
ボタンの見た目を作成するためにまずレイアウトファイルを作成する.
layoutフォルダで右クリック → New -> XML -> Layout XML Fileの順にクリック → 

元記事を表示

コピペでFlutter その4

[前の記事 コピペでFlutter その3](https://qiita.com/netineti512/items/e715d50a55b9d1fcaf8e)

[参考](https://docs.flutter.dev/cookbook/effects/nested-nav)
“`sample1.dart
import ‘package:flutter/material.dart’;

const routeHome = ‘/’;
const routeSettings = ‘/settings’;
const routePrefixDeviceSetup = ‘/setup/’;
const routeDeviceSetupStart = ‘/setup/$routeDeviceSetupStartPage’;
const routeDeviceSetupStartPage = ‘find_devices’;
const routeDeviceSetupSelectDevicePage = ‘select_device’;
const routeDeviceSetupConne

元記事を表示

コピペでFlutter その3

[前の記事 コピペでFlutter その2](https://qiita.com/netineti512/items/990c936b54df3993b029)

[参考](https://docs.flutter.dev/cookbook/effects/download-button)
“`sample1.dart
import ‘package:flutter/cupertino.dart’;
import ‘package:flutter/material.dart’;

void main() {
runApp(
const MaterialApp(
home: ExampleCupertinoDownloadButton(),
debugShowCheckedModeBanner: false,
),
);
}

@immutable
class ExampleCupertinoDownloadButton extends StatefulWidget {
const ExampleCupertinoDownloadBu

元記事を表示

Android 9,10,11での外部ストレージへのCSV出力不具合

## はじめに
– Qiita初投稿です。読みづらい箇所、不適切な箇所があるかもしれません。その際はコメントで指摘していただけると幸いです。
– CSV出力をする際に結構苦戦したので、自分用のメモとして残します。

## 環境
Android Studio Chipmunk | 2021.2.1 Patch 2

## 対象OS
Android 9,10,11

“`build.gradle
android {
compileSdk 31

defaultConfig {
// ~省略~
minSdk 26
targetSdk 31
// ~省略~
}
// ~省略~
}
“`

## 不具合内容
Androidアプリで、DBの内容をスマホのストレージへCSV出力をしたいが、エラーが発生し、機種によっては出力できない。
今回はDownloadフォルダへアクセスしたいが、できない。

#### エラーメッセージ
“`
/jp.hogehoge W/System.err: jav

元記事を表示

コピペでFlutter その2

[前の記事 コピペでFlutter その1](https://qiita.com/netineti512/items/583bfdfb6b141894679f)

[参考](https://docs.flutter.dev/cookbook/animation/opacity-animation)
“`sample1.dart
import ‘package:flutter/material.dart’;

void main() => runApp(const MyApp());

class MyApp extends StatelessWidget {
const MyApp({super.key});

@override
Widget build(BuildContext context) {
const appTitle = ‘Opacity Demo’;
return const MaterialApp(
title: appTitle,
home: MyHomePage(title: appTitle),
)

元記事を表示

先輩エンジニアに質問するときに気を付けること

# はじめに
今回は、自分が実装で行き詰った時に先輩に実装の仕方を聞くときに気を付けるといいことを紹介していこうと思います。
### 本文
まず一番重要なのが、***自分が何を実装したくてどうして実装ができていないか***を伝えることです。
これがないと実装の着地点も分からずどこで詰まってるのかすらもわからないので助言のしようがありません
こうなってくると次に出てくるのが***どうして実装できないかすらわからない***という部分だと思います。
そうした場合は自分が参考にした記事や、サイトのURLを共有しつつコードを直接見せましょう。
ただし、ここで気を付けてほしいのが***URLやコードの共有のみを行って説明も何もしないこと***です。
そうすると、先ほどと同じように得られる情報が少なく、先輩側がコードやURLからどう実装したいのかなどを読み取らないといけなくなります。
それでは本末転倒です。
いろいろと書きましたが、実は***自分が持ちうる情報をなるべくわかりやすくすべて共有する***という部分に気を付けておけばいいだけなのです。
### 最後に
今回は、コードではなくエンジニアとし

元記事を表示

vistaでandroid studio その14

# 概要
vistaでandroid studio 1.0.1やってみた。
openglやってみた。
練習問題やってみた。

# 練習問題
三角形を描画せよ。

# 写真

![device-2022-09-03-193142.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/18104/7a63092a-61b1-1de6-ff03-e68389543d5a.png)

# サンプルコード

“`
package com.ohisamallc.ohiapp154.ohiapp154;

import android.content.Context;
import android.content.Intent;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.media.AudioFormat;
import android.media.AudioManager;
import android.m

元記事を表示

vistaでandroid studio その13

# 概要
vistaでandroid studio 1.0.1やってみた。
openglやってみた。

# 写真

![device-2022-09-03-172706.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/18104/4645cfaf-f2c7-68e7-bf9a-d6df26ba8a01.png)

# レイアウト

“`
コピペでFlutter その1

mainの雛形をコピぺで変更するだけで実行できると思います。

雛形
“`main.dart
import ‘package:flutter/material.dart’;

void main() {
runApp(const MyApp());
}

class MyApp extends StatelessWidget {
const MyApp({Key? key}) : super(key: key);

// This widget is the root of your application.
@override
Widget build(BuildContext context) {
return MaterialApp(
title: ‘Flutter Demo’,
theme: ThemeData(
// This is the theme of your application.
//
// Try running your application with “

元記事を表示

Unity 研究期間の成果

# はじめに
研究期間(実装したことないものを実装する期間)中に実装したものについて、実装方法や参考資料を本記事にまとめました。
他に面白そうな実装物などあれば、是非コメント下さい!

# 目次
1.AdMob起動時広告の実装
2.Google Play In-App Review APIの実装

# 1.AdMob起動時広告の実装
①下記サイトから “GoogleMobileAds-v7.1.0.unitypackage” をダウンロードする
※v7.2.0は未確認

https://github.com/googleads/googleads-mobile-unity/releases/tag/v7.1.0

②Unityのプロジェクト内に①でダウンロードした “GoogleMobileAds-v7.1.0.unitypackage” をインポートする

③下記サイトから “MainScene.cs” と “AppOpenAdManager.cs” をダウンロードする

https://github.com/googlecodelabs/admob-appopen-unity/tr

元記事を表示

GoogleFit連携をReactNativeで実装

# はじめに

GoogleFitから体重、心拍、血圧、歩数を取得するアプリケーションをReactNativeで作ってみました。
わりと簡単に作れたのと、AndroidStudioのデバイスで動作確認もできるのを知らず、できたことに少し驚きました。

ソースはGithubに上げてありますので主にGoogleCloudでの手順を解説していきます。

大きな流れはこんな感じ。

1. FitAPIを有効化する
1. 認証情報の設定
1. 同意画面の作成&テストユーザの登録
1. アプリケーションの起動
1. 動作確認

# 事前準備

## AndroidStdioのインストール&設定

AndroidStudioのエミュレータを使って動作確認できるのでインストールしておきましょう。

Fitアプリはデフォルトで入っていませんので、PlayStore付きのデバイスを使います。私はPixel4を利用しました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/57686/7666b6a2-e6

元記事を表示

Android Weekly #532 まとめ

# 概要

今週のAndroidWeeklyという週報に紹介されている記事のまとめ。
https://androidweekly.net/issues/issue-532
皆さんの最新技術キャッチアップの助けに少しでもなれば幸いです。

## Domain-Specific Models

API通信におけるデータクラスをDomain-Specificに分けることを奨励した記事。

“`kotlin
@DatabaseTable(tableName = “boards”)
data class Board(
@DatabaseField(columnName = “name”)
@SerializedName(“BoardName”)
private var boardName: String?,

private var cards: List?,

private var lastViewedTime: Long?
)
“`

このように一つのクラスを

– APIとの通信
– Local DBとのやりとり
– UIからのリク

元記事を表示

vistaでandroid studio その12

# 概要
vistaでandroid studio 1.0.1やってみた。
練習問題やってみた。

# 練習問題
qiitaのohisamaの記事をリストして、タップでブラウザで表示せよ。

# 方針

– 暗黙のインテント使う。
– listview使う。
– httpsurlconnect使う。
– AsyncTask使う。
– jsonarray使う。

# 写真

![device-2022-09-03-063009.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/18104/9da7287e-621a-dd75-0852-737ae8b0bae6.png)

# サンプルコード

“`
public void run() {
new AsyncTask() {
ListView list = (ListView) findViewById(R.id.list);
final ArrayList data = new

元記事を表示

vistaでandroid studio その11

# 概要
vistaでandroid studio 1.0.1やってみた。
練習問題やってみた。

# 練習問題
qiita apiを叩いて、jsonをパースして、listviewに表示せよ。

# 写真

![device-2022-09-03-065018.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/18104/6c25fd12-a8f0-a44a-0222-c11f2b2bfa83.png)

# レイアウト

“`
vistaでandroid studio その10

# 概要
vistaでandroid studio 1.0.1やってみた。
練習問題やってみた。

# 練習問題
qiita apiを叩け。

# サンプルコード

“`
public void run(View view) {
TextView tv = (TextView) findViewById(R.id.chage);
String dis = “”;
String urlStr = “https://qiita.com/api/v2/users/ohisama@github/items”;
String result = null;
HttpURLConnection con;
URL url = null;
BufferedReader reader = null;
try
{
Log.e(“ohi”, “ok0”);
url = new URL(urlStr);
con = (HttpURLConnection) url.openConnection();
Log.e(“ohi”, “ok1”);

元記事を表示

Android端末の画面収録をMacでやる方法

自分のメモ用に記載

## 事前準備
– homebrewで以下をインストール

“`shell
brew install scrcpy
brew install android-platform-tools
“`

## 動かし方
– Android端末を繋いで以下コマンドを実行
“`shell
scrcpy
“`

## 画面録画
– 今いるディレクトリに保存される
“`shell
# 録画開始
scrcpy –record file.mp4
# 録画終了
# – Macと接続している線を抜く (?)
“`

元記事を表示

RecyclerViewで表示されているセルの高さを取得する

RecyclerViewのセル(下画像の赤枠部分)の`height`と`width`の表示されている比率を取得する必要があり、参考になる記事が少なかったため投稿します。

### 比率計算処理の関数を実装
今回はRecyclerViewがスクロールされた際に、表示されている全てのセルの比率をログとして出力する方針で実装していきます。

“`kotlin
fun getVisibleCellHeight(rv: RecyclerView) {
val layoutManager = rv.layoutManager as GridLayoutManager

val firstPosition = layoutManager.findFirstVisibleItemPosition

元記事を表示

OTHERカテゴリの最新記事