Androidアプリで
Googlecalendarのサンプルを使って予定を出すことを勉強中ですが、
公式のサンプルコードで使用しているインポートしたパッケージについて調べてみました。
https://developers.google.com/google-apps/calendar/quickstart/android#step_5_setup_the_sample
(編集していくかもしれません。)
import com.google.android.gms.common.ConnectionResult;
https://developers.google.com/android/reference/com/google/android/gms/common/ConnectionResult
クライアントがGoogle Playサービスに接続できないときに発生するすべてのエラーコードが含まれています。
これらのエラーコードはGoogleApiClient.OnConnectionFailedListenerによって使われます。
Parcelableを実装しています。
(Parcelableって何だ・・・)
Parcelable
今回はParcelableインタフェースを用いて、インスタンスの状態を保存する方法を説明します。
状態の保存と言うとシリアライズを思い浮かべる方もいると思いますがシリアライズは永続化を目的としていますが、Parcelableはプロセス間通信のときなど、一時的に状態を保存したいときに利用します。
https://techbooster.org/android/7131/
import android.os.AsyncTask;
https://developer.android.com/reference/android/os/AsyncTask.html
https://dev.classmethod.jp/smartphone/android/asynctask/
AsyncTask
非同期処理を行うことができます。
AsyncTaskを使うとThreadやRunnableを意識することなく、
メインスレッドとは別のスレッドで処理を行うことができます。
(メインスレッドって何だ・・・)
非同期処理中であってもメインスレッドでの処理が可能です。
import com.google.android.gms.common.GoogleApiAvailability;
https://developers.google.com/android/reference/com/google/android/gms/common/GoogleApiAvailability
GoogleApiAvailability
このデバイスでGoogle PlayサービスAPKが使うことができて、最新であることを確認するためのクラスです。
(APKって何だ・・・)
APK (Android application package、アンドロイドアプリケーションパッケージ、エーピーケー )とは、Googleによって開発されたAndroid専用ソフトウェアパッケージのファイルフォーマットである。
JARファイルをベースとしたZIP形式で、アーカイブファイルの一種である。
import com.google.api.client.googleapis.extensions.android.gms.auth.GoogleAccountCredential;
GoogleAccountCredential
https://developers.google.com/api-client-library/java/google-api-java-client/reference/1.20.0/com/google/api/client/googleapis/extensions/android/gms/auth/GoogleAccountCredential
Googleアカウントの承認とアカウント選択を管理します。
HttpRequestInitializerを実装しています
トークンを取得するときにスローされたものGoogleAuthExceptionはすべてラップされます。
(GoogleAuthExceptionとは・・・)
(ラップとは・・・)
GoogleAuthException
GoogleAuthExceptionsはGoogleの認証エラーを通知します。
https://developers.google.com/android/reference/com/google/android/gms/auth/GoogleAuthException
import com.google.api.client.util.ExponentialBackOff;
ExponentialBackOff
BackOffを実装します。
実装BackOffそれは指数関数的に増加するランダム化機能を使用して、各再試行のためのバックオフ期間を増加させます。
(BackOffって何だ・・・)
データ送信処理が失敗して再送信するときに、失敗回数が増えるに連れて再送信するまでの待ち時間を指数関数的に増やす仕組みを exponential backoff という。
https://siguniang.wordpress.com/2013/07/13/notes-on-exponential-backoff/
https://developers.google.com/api-client-library/java/google-http-java-client/reference/1.20.0/com/google/api/client/util/ExponentialBackOff
import android.Manifest;
http://programming-study.com/technology/android-manifest/
Manifest
マニフェストファイルとは?
マニフェストファイルとは作成したアプリの基本的な情報が書かれているファイルのことです。Androidアプリを作成する場合は必須で、Android Studioでプロジェクトを作成すると自動的に作られます。
import com.google.api.client.json.JsonFactory;
抽象的な低レベルのJSONファクトリです。
実装は、スレッドセーフ(複数のスレッドが同時に実行したり同じデータを扱ったりしても壊れないこと)であり、サブクラスはスレッドセーフでなければなりません。
効率を最大限に高めるには、アプリケーションでJSONファクトリのグローバル共有インスタンスを1つ使用する必要があります。
(JSONファクトリとは・・・)
https://fasterxml.github.io/jackson-core/javadoc/2.2.0/com/fasterxml/jackson/core/JsonFactory.html
読者(別名パーサーJsonParser)とライター(別名ジェネレータJsonGenerator)インスタンスを構成して構築するために使用されたJacksonパッケージ(Java オブジェクトと JSON の相互変換とかができるライブラリ)の主要なファクトリクラスです。
import android.accounts.AccountManager;
https://developer.android.com/reference/android/accounts/AccountManager.html
AccountManager
AccountManagerとは、Androidにおいて様々なWebサービスのアカウントを管理するための仕組みのことです。
https://qiita.com/nein37/items/25ba6e5176118fae5f13
import com.google.api.client.http.HttpTransport;
https://developers.google.com/api-client-library/java/google-http-java-client/reference/1.20.0/com/google/api/client/http/HttpTransport
HttpTransport
スレッドセーフ(複数のスレッドが同時に実行したり同じデータを扱ったりしても壊れないこと)な抽象的なHTTPトランスポート。
(HTTPトランスポートとは・・・)
HTTPトランスポートは、Oracle Service Busでhttp/sプロトコルを使用してクライアントとサービス・プロバイダ間でメッセージの送信を行います。
https://docs.oracle.com/cd/E28389_01/dev.1111/b61435/http_poller.htm
import com.google.api.client.extensions.android.http.AndroidHttp;
Android HTTPトランスポートのユーティリティ。
(ユーティリティとは・・・)
ユーティリティ【utility programs/utilities】とは規模が小さく簡潔で、補助的な機能を提供するプログラムのこと。
https://homepage-sakusei-kaisha.com/it-yougojisho/kaihatsu-gijutsu/itkaihatsu/yu-thirithi.html
import android.content.SharedPreferences;
SharedPreferences
SharedPreferencesはアプリの設定データをデバイス内に保存するための仕組み。XML形式で保存されます。
(要するにAcitivityが破棄されてもCommitさえされていれば保存されている、ということ)
キー・バリュー形式で保存され、主にテキストや数値の保存を得意とします。
https://qiita.com/Yuki_Yamada/items/f8ea90a7538234add288
import android.net.ConnectivityManager;
https://developer.android.com/reference/android/net/ConnectivityManager.html
ConnectivityManager
ネットワーク接続の状態に関するクエリに応答するクラス。 また、ネットワーク接続が変更されたときにアプリケーションに通知します。
import com.google.api.client.util.DateTime;
https://developers.google.com/api-client-library/java/google-http-java-client/reference/1.20.0/com/google/api/
http://vividcode.hatenablog.com/entry/android-app/date-time-classesclient/util/DateTime
DateTime
時刻を扱う。
任意の時間と日付とに基づいて、任意の時間帯の不変表現RFC 3339。
実装は不変であり、したがってスレッドセーフです。
import android.app.ProgressDialog;
https://developer.android.com/reference/android/app/ProgressDialog.html
https://techacademy.jp/magazine/3719
ProgressDialog(プログレスダイアログ)とは、アプリで時間のかかる処理をしている時にどの程度処理が進んでいるのかダイアログで表示したい場合に使われるGUIコンポーネントです。
import android.app.Dialog;
ダイアログは、ユーザーによる意思決定や追加情報の入力用に表示される小さなウィンドウです。 ダイアログは全画面に表示されることはなく、通常はユーザーが処理を続ける前にアクションを起こす必要があるモーダル イベントに使用されます。
import com.google.api.services.calendar.CalendarScopes;
カレンダーAPIで使用できるOAuth 2.0スコープ
(Google API OAuth2.0のトークンとは・・・)
https://qiita.com/giiko_/items/b0b2ff41dfb0a62d628b
https://qiita.com/TakahikoKawasaki/items/200951e5b5929f840a1f
https://murashun.jp/blog/20150920-01.htmlOAuth はリソースオーナーの代わりに保護リソースにアクセスする方法をクライアントに提供します。
クライアントが保護リソースにアクセスする前に、クライアントはまずリソースオーナーの認可を取得し、アクセス許可とアクセストークン (権限の範囲と期間を示すトークン) を交換しなけばなりません。クライアントは、リソースサーバにアクセストークンを渡すことにより、保護リソースにアクセスできるようになります。
import android.app.Activity;
Activity
https://developer.android.com/reference/android/app/Activity.html
https://developer.android.com/guide/components/activities.html?hl=ja
Activity は、電話をかける、写真を撮影する、メールを送る、マップを閲覧するといった操作をユーザーができる画面を提供するアプリケーション コンポーネントです。
import android.net.NetworkInfo;
NetworkInfo
https://developer.android.com/reference/android/net/NetworkInfo.html
ネットワークインターフェイスのステータスを示します。getActiveNetworkInfo()を使用して、現在のネットワーク接続を表すインスタンスを取得します。
import java.io.IOException;
何らかの種類のI / O例外が発生したことを通知します。 このクラスは、失敗または中断されたI / O操作によって生成される例外の一般的なクラスです。
import com.google.api.client.googleapis.extensions.android.gms.auth.GooglePlayServicesAvailabilityIOException;
https://developer.android.com/reference/java/io/IOException.html
https://developers.google.com/api-client-library/java/google-api-java-client/reference/1.20.0/com/google/api/client/googleapis/extensions/android/gms/auth/GooglePlayServicesAvailabilityIOException
UserRecoverableAuthIOExceptionを継承しています。
(UserRecoverableAuthIOExceptionとは・・・)
https://developers.google.com/api-client-library/java/google-api-java-client/reference/1.19.1/com/google/api/client/googleapis/extensions/android/gms/auth/UserRecoverableAuthIOException
UserRecoverableAuthExceptionをIOExceptionにラップするので、直接キャッチできます。
getIntent()を使用して、ユーザー対話が回復できるようにします。 または、getCause()を使用して、ラップされたUserRecoverableAuthExceptionを取得します。
import android.content.Context;
https://developer.android.com/reference/android/content/Context.html
Context
コンテキスト。アプリケーション環境に関するグローバルな情報へのインタフェース。 これは、Androidシステムによって実装が提供される抽象クラスです。 アプリケーション固有のリソースやクラスへのアクセス、起動アクティビティ、ブロードキャストや受信インテントなどのアプリケーションレベルの操作のアップコールを許可します。
import android.content.Intent;
https://developer.android.com/guide/components/intents-filters.html?hl=ja
Intent
インテント。
Intent は、他のアプリ コンポーネントからのアクションを要求するときに使用するメッセージング オブジェクトです。インテントを使用することでコンポーネント間の通信を促進する方法はいくつかありますが、基本的な使用例は次の 3 つです。
import android.os.Bundle;
https://developer.android.com/reference/android/os/Bundle.html
https://qiita.com/kojionilk/items/138eea19dadb14997136
Bundle とは
Android アプリ開発のさまざまなところに出てくる オブジェクトの入れ物 である。
import pub.devrel.easypermissions.EasyPermissions;
EasyPermissions
EasyPermissionsは、Android M以上をターゲットとする場合の基本的なシステム権限ロジックを簡素化するラッパーライブラリです。
(Android Mとは・・・)
https://www.weblio.jp/content/Android+M
Android M
Android Mとは、Googleが開発するスマートフォン向けプラットフォーム(OS)「Android」の、Android Lollipopに次ぐバージョンのコードネームである。
(ラッパーとは)
http://wa3.i-3-i.info/word191.html
もともとの機能を包んで、そいつの代わりに矢面に立ってくれるやつのこと。
import android.support.annotation.NonNull;
https://developer.android.com/reference/android/support/annotation/NonNull.html
パラメータ、フィールドまたはメソッドの戻り値がnullになることはないことを示します。
import android.text.TextUtils;
https://developer.android.com/reference/android/text/TextUtils.html
https://qiita.com/toastkidjp/items/b6a60c93bf2b66c40ab8
文字列処理で便利なメソッドが揃っています。null の際の比較を柔軟にできるメソッドがいくつかある(equals, isEmpty 等)のが特徴的です。
import android.text.method.ScrollingMovementMethod;
テキストバッファをスクロールして移動キーを解釈する移動方法。
import android.widget.LinearLayout;
https://developer.android.com/reference/android/widget/LinearLayout.html
https://techacademy.jp/magazine/4455
他のビューを横に1列に並べるか、縦に並べて1列に配置するレイアウト。
import android.view.ViewGroup;
ViewGroupは、他のビュー(子と呼ばれる)を含むことができる特別なビューです。ビューグループは、レイアウトおよびビューコンテナの基本クラスです。 このクラスは、レイアウトパラメータの基本クラスとして機能するViewGroup.LayoutParamsクラスも定義します。
import java.util.ArrayList;
Listインタフェースのサイズ変更可能な配列の実装。
import java.util.Arrays;
このクラスには、配列の操作(並べ替えや検索など)のためのさまざまなメソッドが含まれています。
import android.widget.TextView;
ユーザーにテキストを表示するユーザーインターフェイス要素。 ユーザーが編集可能なテキストを提供するには、EditTextを参照してください。
import android.widget.Button;
ユーザーがタップまたはクリックしてアクションを実行できるユーザーインターフェイス要素。
import java.util.List;
順序付きコレクション(シーケンスとも呼ばれます)。
import android.view.View;
このクラスは、ユーザーインターフェイスコンポーネントの基本ビルディングブロックを表します。