最初のAndroidアプリケーションの開発

なぜ私たちはAndroidを気にするのですか? それは地球上で最も広く分散されたモバイルプラットフォームであり、世界中の消費者にアクセス可能であるため、私たちは、Androidプラットフォームを気 パソコンの所有権が贅沢である経済では、モバイルデバイスの使用が標準であり、Androidは人々を相互に接続する上で大きな役割を果たしています。 このチュートリアルで学ぶように、Androidはアプリケーションに明確なアプローチを取ります。 Androidのアーキテクチャは、要求されたアクションのランタイムバインディングとそれらの要求を満たすためのコードのおかげで、高度にカス それは市場主導の考慮事項やAndroidの技術的側面だかどうか、それは検討する価値のあるプラットフォームです。 さらに、プラットフォームのモバイル体験を真剣に検討している場合は、Androidを無視することはできません。

前提条件

このチュートリアルでは、一緒に動作するいくつかのテクノロジが必要です。 あなたは、このチュートリアルのためにそれらのすべてが必要です。

  • Android Studio–Android Studioは、Androidアプリケーションを構築するための主な出発点です
  • Androidデバイスまたはエミュレータ–物理AndroidデバイスまたはAndroidエミュレータが必要です。 いずれにしても、このチュートリアルを読むことで、Androidアプリケーションの基本的な接続ポイントを理解するのに役立ちます。
  • ソースコード-このチュートリアルのソースコードスニペットは次のとおりです:

    • AndroidManifest。xml snippet-このファイルは、Androidアプリケーションのアプリケーションデプロイメント記述子です。
    • java-このチュートリアルのサンプルアプリケーションへの主要なエントリポイントであるAndroidアクティビティを実装します。
    • xml-これには、Androidアクティビティで使用するビジュアル要素またはリソースの定義が含まれています。
    • xmlコンプリート-これは完全なAndroidManfestを一覧表示します。重要な要素のそれぞれの説明と一緒にxmlファイル。

Androidアーキテクチャの紹介

Android Studioのインとアウトに飛び込み、Androidアプリケーションを開発する前に、Androidのアーキテクチャと、チュートリアル以降で役立つ主な用語を見てみましょう。

Androidの用語

以下の用語を理解することは、Android Studioを使用したAndroidアプリケーション開発に役立ちます。

  • Androidはモバイルデバイスを対象としたオープンソースの動作環境です。 ますます、Androidは”スマートフォン”を超えたアプリケーションで発見されています。 これらには、ウェアラブル技術、プロジェクター、スピーカー、テレビなどの家電製品、さらには自動車が含まれます。
  • 多くの場合、エミュレータは、モバイルコンピューティングデバイスなどの別の環境をエミュレートするパーソナルコンピュータ(PC、Mac、Linuxマシン)上で実行される環
  • Linuxは、サーバー、デスクトップコンピュータ、ネットワークアプライアンス、モバイルコンピューティングデバイスなど、多くのコンピューティングプラットフォームの中心にあるオープンソースのオペレーティングシステムカーネルです。 AndroidはLinuxカーネルの上で実行されます。
  • Androidランタイム(ART)は、Androidスタックにある動作環境で、実行時にアプリケーションコードを実行します。 Androidランタイムは、準拠したJava VMと同様の方法で動作する以前のバージョンのAndroidからの「従来の」Dalvik仮想マシン(VM)を置き換えます。

意図

創業以来、Androidは携帯電話空間で支配的な力となっています。 その適用モデルは適用が作動するために大量のかちりと鳴り、叩くことを要求する単一、メニュー荷を積んだ適用ではないこと独特である。 確かに、そこにタップするメニューやボタンがありますが、Androidは意図として知られているそのアーキテクチャに革新的な設計要素を持っています。

インテントは、アプリケーションがリクエストを発行することを可能にする構造体です。 それは次のように見えるかもしれません:

  • “指名手配: 私は連絡先を検索するためのアプリケーション”
  • “Wanted:私はこの画像を表示するためのアプリケーション”
  • “Wanted:この地理ベースの検索を実行するためのアプ”

同様で補完的な方法で、アプリケーションは、さまざまな要求や意図を満たすことができ、関心があるとして自分自身を登録することができます。 分類された広告の範例に続くためには、これらは次のようになるかもしれない:

  • “利用可能:アプリケーションの準備ができており、明確で簡潔な方法で連絡先レコードを提示する意思がある”
  • “利用可能: アプリケーションの準備ができて、地理的な検索を実行するために喜んで。”

これらはIntentFiltersの例であり、次に説明します。

IntentFilter

アプリケーションは、IntentFilterとして知られる構造体を介して、これらのタイプの操作を実行するための可用性を発表します。 IntentFilterは、実行時に登録されるか、AndroidManifestに列挙されます。xmlファイル。 次のスニペットは、着信SMS(テキスト)メッセージに応答するAndroidアプリケーションからのものです:

<receiver android:name=".MySMSMailBox" android:exported="true"> <intent-filter> <action android:name="android.provider.Telephony.SMS_RECEIVED" /> </intent-filter> </receiver>

Show more show more icon

IntentFilterの簡単な紹介の後、次のセクションでは、Androidアプリケーションの四つの主要なタイプを紹介します。

Androidアプリの種類

androidアプリの主な四つのタイプを調べてみましょう:

  • Activity
  • Service
  • Receiver
  • ContentProvider

ユーザーインターフェイス(UI)要素を表示するためのビューも見ていきます。

アクティビティアプリ

アクティビティは、Androidアプリケーションの中で最も目に見え、顕著な形です。 アクティビティは、ビューと呼ばれるクラスの支援とともに、UIをアプリケーションに提示します。 Viewクラスは、テキストボックス、ラベル、ボタン、およびモバイルまたはコンピュータプラットフォームで一般的なその他のUiなど、さまざまなUI要素otherwise.An アプリケーションには、一つ以上の活動が含まれていてもよいです。 アクティビティは、通常、アプリケーションで見つかった画面との一対一の関係で定義されます。

アプリケーションは、startActivity()またはstartSubActivity()というメソッドを呼び出すことによって、あるアクティビティから別のアクティビティに移動します。 前者の方法は、アプリケーションが単に新しいアクティビティに”切り替える”ことを望む場合に使用されます。 後者は、同期呼び出し/応答パラダイムが必要な場合に使用されます。 どちらの場合も、intentは呼び出されたメソッドに引数として渡されます。

指定された意図を満たすために最適なアクティビティを決定するのは、オペレーティングシステムの責任です。

サービスと受信機のアプリ

他のマルチタスクコンピューティング環境と同様に、さまざまな任務を行う”バックグラウンドで”実行されているアプリ Androidは、アプリケーションサービスのこれらのタイプを呼び出します。 このサービスは、UIを持たないAndroidアプリケーションです。

受信側は、インテントを処理する要求を受信するアプリケーションコンポーネントです。 サービスと同様に、受信機は、通常の練習では、UI要素を持っていません。 受信機は、通常、AndroidManifestに登録されています。xmlファイル。

次のスニペット(IntentFilterに示されているものと同じです)は、定義されている受信側アプリケーションの例です。 Receiverのname属性は、receiverの実装を担当するJavaクラスであることに注意してください。

<receiver android:name=".MySMSMailBox" android:exported="true"> <intent-filter> <action android:name="android.provider.Telephony.SMS_RECEIVED" /> </intent-filter> </receiver>

Show more show more icon

ContentProviderは、データストア抽象化のためのAndroidメカニズムです。 アドレス帳または連絡先データベース:のは、モバイルデバイス上で見つかったデータの特定のタイプを見てみましょう。 アドレス帳には、携帯電話を使用する際に必要となる可能性のあるすべての連絡先と電話番号が含まれています。

ContentProviderは、特定のデータストアへのアクセスを抽象化するメカニズムです。 多くの点で、ContentProviderはデータベースサーバーの役割で機能します。 特定のデータストアにコンテンツを読み書きする操作は、ファイルやデータベースに直接アクセスするのではなく、適切なContentProviderを介して渡す必要があります。 ContentProviderの「クライアント」と「実装」の両方が存在する可能性があります。

Androidのビュー

Androidのビューは、Androidデバイスの画面上に物事を置くためのUIメカニズムです。 Androidアクティビティでは、ビューを使用してUI要素を表示します。 より普及したレイアウトの設計のいくつかは下記のものを含んでいます:

  • LinearVertical-後続の各要素は、単一の列でその下に流れることによって、その前の要素に従います。
  • LinearHorizontal–後続の各要素は、単一の行で右に流れることによって、その前の要素に従います。
  • Table–HTMLテーブルに似た一連の行と列。 各セルには1つのビュー要素を保持できます。
  • Constraint–各要素は、画面の上部や側面、または別の要素などの表示の側面に”制約”されます。 このレイアウトは、”応答性の高い”アプリケーションの構築に役立ち、Androidプラットフォームの以前のバージョンで導入されたレガシー相対レイアウトに相続

特定のレイアウト(またはレイアウトの組み合わせ)が選択された後、個々のビューを使用してUIを定義します。

ビュー要素は、次のような使い慣れたUI要素で構成されます:

  • ボタン
  • ImageView
  • EditTextは、日付や数値などのさまざまなフィルタで入力を収集します
  • TextView(ラベルに似て、静的テキストを表示します)
  • CheckBox
  • ラジオボタン
  • Spinner(”ドロップダウン”コンボボックスに似ています)
  • オートコンプリート(自動テキスト完全機能を備えたEdittext)

ビューはXMLファイルで定義されます。 たとえば、ボタンとtextviewsが定義された単純なLinearVerticalビューが表示されます:

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent" ><TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:text="Activity 1!" /><TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:text="Activity 1, second text view!" /><Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Switch To Activity 2" /></LinearLayout>

Show more show moreアイコン

https://developer.android.com/, Android Studioをダウンロードするには、下にスクロールします。 Android Studioは、Windows、Mac、およびLinuxで使用できます。

Android StudioはIntelliJ IDEプラットフォームに基づいています。 キーボードショートカットを活用することに興味がある開発者の場合は、Jetbrains webサイトからIntelliJについてもっと学ぶことを検討してください。

Android SDKの使用開始

Android Studioがインストールされたので、Android用ソフトウェア開発者キット(SDK)を入手します。

しかし、先に進む前に、Androidのバージョンについて議論する必要があります。

Androidのバージョン

創業以来、Androidは数値リリースリビジョン、APIレベル、およびJelly Bean、KitKat、Oreo、およびその他の菓子のお気に入りを含む”甘い”名前の幾分平行なパス

利用可能な選択肢に圧倒されるのは簡単です。 今のところ、あなたは、Androidの開発者として始めるために、この”バージョンの風景”の理解のほんの少しを必要としています。

野生のAndroidの多くのバージョン、またはリビジョンがあります。 商用リリース用のアプリケーションを作成する場合は、どのデバイスをターゲットにしているかを知る必要があります。 ウィキペディアは、Androidのバージョン、名前、リリース日だけでなく、市場での各デバイスのおおよその数を描いたグラフィックの素敵な要約を持っています。

新しいデバイスは最新のコードを実行し、古いデバイスは新しいバージョンのAndroidにアップグレードする機能に多少制約があります。 時には、新しいバージョンは、古い携帯電話がサポートすることができない機能をサポートしています(第二のカメラ、近距離通信などを考えてください)。 古い携帯電話が最新のAndroidバージョンを実行できない可能性があるもう1つの自明でない理由は、製造元と通信事業者(Verizon、AT&Tなど)の両方が、エコシステム内で実行されているソフトウェアをサポートする必要があることです。 新しいオペレーティングシステムをサポートするには、デバイスの製造元と通信事業者のリソースが必要です。 市場の力は、これらの市場参加者が以前の販売を支援するよりも将来の販売に関心を持ち、それに応じて人的資本を投資することを示唆しています。

ソフトウェア開発者として、オペレーティングシステムの新しいバージョンがあることは何が重要ですか? これは、プログラミングアプリケーションに関しては、二つの広範なカテゴ:

  • オペレーティングシステムの新しいバージョンは、多くの場合、私たちが利用できる新しい機能を導入し、ユーザーベースはアプリケーションがサポートするこ
  • 環境の古い(またはレガシー)機能は、実際には新しい機能を妨げている可能性があり、および/または特定の機能セットを提供するための劣ったアプロー 実際にAPI定義からコードを削除する必要がある場合があります。 以前に動作していたコードのこの”削除”には特別な用語があります–私たちはそれを”コード非推奨”と呼びます。 APIが削除対象としてマークされている場合、これは非推奨のAPIであると言います。 これは本質的に次のようなものになる開発者へのメッセージです:”警告”このコードは将来削除されますので、それに応じて計画してください。”

Androidプラットフォームは、非推奨としてマークされた後、アプリケーションがかなり長い間古いApiを使用し続けることを許可することにより、非推奨コードへの (このアプローチは、古いコードが単に次のOSリリースで動作を停止することができるiOSの廃止予定のコードを使用したAppleのアプローチとは対照的です。 IOSでは、私たちが見ていない間にもプログラミング言語が変更されるようです!)

Androidは廃止されたコードの長い苦しみでもう少し寛容かもしれませんが、特定のAPIが廃止されていることを示すdocumentationタグに注意する必要があります。 使用しているコードが非推奨としてマークされている場合、非推奨としてマークされているAPIは将来のリリースで削除できるため、アプリケーションの将来のバージ SDKの廃止マーカーは、改善のための将来の機会と潜在的な頭痛のための私たちのロードマップです。 時には、物事を行う”新しい”方法はシンプルで簡単ですが、すべての場合ではありません!

成功したモバイルアプリケーション開発者であることは、時間が犬の年のように通過する傾向があるアプリケーションの寿命にわたって継続的な投

Androidのバージョンへのこの基本的なイントロでは、Android SDKを取得する時間です。

Android SDKの取得とインストール

Android Studioを起動します。 [ツール]メニューで、[SDK Manager]を選択します。 このメニューオプションは、Android Studioの環境設定ダイアログをロードし、Android SDKサブメニューを事前に選択します。 このメニューは、Androidの多くのバージョンで利用可能なさまざまなSdkと対話するための主要な手段です。

Android Studioの環境設定ダイアログのスクリーンショットで、Android SDK ManagerにAndroid SDKの利用可能なバージョンが一覧表示されます

オペレーティングシステムのリリースごとに、APIレベルが増加します。 リビジョンの増加がAPIレベルよりも遅くなることに注意してください。 このリビジョンは、プラットフォームの”世代”、または”メジャー”バージョン番号と考えることができます。 Androidのドキュメントを参照するときは、特定の機能が導入されたAPIレベルに注意してください。 各APIは、apiが廃止され、その後削除されていない限り、示された以上のAPIレベルで使用できます。 たとえば、ContactsContract APIはレベル5で導入されましたが、これはこの時点ではかなり「古い」ものです。

今のところ動作するSDKレベルを1つまたは2つ選択します。 SDKマネージャはその後、関連ファイルをダウンロードし、Android Studio内で使用できるようにします。

また、ツールメニューの下にAVDマネージャのオプションがあります。 AVDはAndroid仮想デバイスの略です。 これはエミュレータです。 エミュレータは、さまざまなデバイスの種類、サイズ、およびバージョンでアプリケーションをテストすることができますので便利です。 このチュートリアルのスクリーンショットは、エミュレータから取得します。 これについては後で詳しく説明します。

最初のAndroidアプリケーションのビルド

このチュートリアルでは、Android Studioを使用して、androidエミュレータでそれをデモする、SaySomethingと呼ばれる基本的なAndroidアプリケー

コードを取得する

ステップ1: 新しいプロジェクトを作成する

  1. ファイル>新しいプロジェクトを選択します。
  2. Androidプロジェクトの作成ダイアログに必要事項を入力し、次へをクリックします。

    Android StudioのCreate New Projectダイアログのスクリーンショット

    新しいプロジェクトの要件は次のとおりです:

    • アプリケーション名
    • 会社ドメイン(これはcomに逆になります。ドメイン)同じアプリケーション名を持っていても、アプリケーションを分割したままにします。
    • プロジェクトの場所–ファイルを保存する場所
    • パッケージ名は、アプリケーション名と会社ドメインから提案されています
    • デフォルトでは、Androidアプリ C++(ネイティブコード用)やKotlinなどの代替言語をサポートする場合は、適切なチェックボックスをオンにします。
  3. [ターゲットAndroidデバイス]ダイアログで、APIレベルとターゲットプラットフォームを指定します。 前述したように、Androidは単なる携帯電話以上のものですが、私たちの目的のために、このチュートリアルの携帯電話とタブレットのフォームファクタを選択 次に、[次へ]をクリックします。

    Android StudioのターゲットAndroidデバイスダイアログのスクリーンショット

  4. [モバイルへのアクティビティの追加]ダイアログで、空のアクティビティタイプを選択します。 次に、[次へ]をクリックします。

    Android Studioのモバイルダイアログにアクティビティを追加するスクリーンショット

    これにより、Android Studioから直接ビルドして実行する準備ができたデフォル

  5. [アクティビティの構成]ダイアログで、アプリケーションのファイルに名前を付けます。

    Android Studioでのアクティビティの設定ダイアログのスクリーンショット

ステップ2:コードを確認する

次の図は、新しいプロジェクトのコンポーネントを示しています:

Android Studio

のプロジェクトセクションに表示される新しいプロジェクトファイルのスクリーンショットappGradle Scriptsの2つのフォルダがあります。

  • appフォルダには、アプリケーションのすべてのコードが含まれています。
  • appフォルダ内のmanifestフォルダにはAndroidManifestが含まれています。このアプリケーションのデプロイメント記述子であるxml。 このファイルは、アプリケーションとの対話方法、アプリケーションが起動されたときに表示するアクティビティ、アプリケーションサービスを意図するア
  • javaフォルダには、アプリケーションのソースコードが含まれています。 この場合、アクティビティを実装するファイルと、自動テストを実行するためのクラスファイルのカップル(このチュートリアルでは無視します)。
  • resフォルダには、アイコン、レイアウトファイル、文字列、メニューなど、アプリケーションのリソースが含まれています。
  • Gradle Scriptsフォルダには、アプリケーションを構築するためのすべてのスクリプト可能な要素が含まれています。 Gradleビルドシステムはそれ自体が話題です。 今のところ、これらのスクリプトは、アプリケーションを構築するプロセスを制御することを理解しています–そして重要なのは、より成熟したプロジ このアプローチは自動化をサポートし、継続的な統合のカテゴリに分類されるため、これは重要です。

さて、ソースコードをさらに詳しく調べてみましょう。

アプリケーションのプライマリアクティビティ

サンプルアプリケーションは、MainActivityという名前の単一のアクティビティで構成されています。

package com.navitend.saysomething;import android.content.Intent;import android.net.Uri;import android.os.Bundle;import android.support.v7.app.AppCompatActivity;import android.view.View;import android.util.Log;import android.widget.Button;import android.widget.TextView;import android.widget.EditText;public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Log.i("IBM","Hello there logcat!"); setContentView(R.layout.activity_main); final Button btnHitMe = (Button) findViewById(R.id.hitme); final Button btnMapMe = (Button) findViewById(R.id.mapme); final TextView tvLabel = (TextView) findViewById(R.id.thelabel); final EditText etLatitude = (EditText) findViewById(R.id.etLatitude); final EditText etLongitude = (EditText) findViewById(R.id.etLongitude); btnHitMe.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { tvLabel.setText("Ouch!"); } } ); btnMapMe.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { String coords = etLatitude.getText()+","+etLongitude.getText(); Log.i("IBM",coords); Uri mapsIntentUri = Uri.parse("geo:" + coords); Intent mapIntent = new Intent(Intent.ACTION_VIEW, mapsIntentUri); startActivity(mapIntent); } } ); }}

より多くのアイコンを表示

MainActivityは通常のJavaクラスで、期待どおりにパッケージとインポートがあります。

  • MainActivityは、androidという名前のパッケージにあるAppCompatActivityという名前の基本Androidクラスを拡張します。サポート。v7.アプリ
  • onCreate()メソッドは、このアクティビティへのエントリポイントで、Bundle型の引数を受け取ります。 Bundleは、基本的にmapまたはhashmapのラッパーであるクラスです。 構築に必要な要素は、このパラメータに渡されます。
  • setContentView(..)は、r.レイアウトを使用してプライマリUIを作成します。メイン引数。 これは、アプリケーションのリソースにあるメインレイアウトを表す識別子です。 “R”クラスの識別子は、ビルドプロセスによって自動的に生成されることに注意してください。 基本的に、前述のresフォルダーの下にあるすべてのxmlリソースファイルには、Rクラスを使用してアクセスします。
  • アプリケーションのリソース

    Androidのリソースは、前述のようにresという名前のプロジェクトのサブディレクトリに編成されています。 リソースは多くのカテゴリに分類されます。 これらのカテゴリの3つは次のとおりです。:

    • Drawables–このフォルダには、アイコンやビットマップなどのグラフィックスファイルが含まれています
    • レイアウト-このフォルダには、アプリケーションのレ これらは、以下で詳細に検討される。
    • Values–このフォルダにはstringsという名前のファイルが含まれています。xml。 これは、アプリケーションの文字列のローカライズのための主要な手段です。 ファイルの色。xmlは、アプリケーションで使用されるカラーコードを定義するのに便利です。 このファイルは、webプログラミング技術に精通している人のためのcssスタイルシートに似ています。

    main_activity内のプライマリUIリソース。xmlファイル

    サンプルアプリケーションには、単一のアクティビティと単一のビューが含まれています。 アプリケーションにはmain_activityという名前のファイルが含まれています。アクティビティのプライマリUIの視覚的な側面を表すxmlmain_activityには参照がないことに注意してください。レイアウトが使用されるxml。 これは、必要に応じて、それが複数の活性で使用され得ることを意味する。 次のコードリストを参照してください

    <?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:gravity="center_vertical"> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal" android:gravity="center" tools:layout_editor_absoluteX="8dp" tools:layout_editor_absoluteY="301dp"> <Button android:id="@+id/hitme" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Hit Me!" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" tools:layout_editor_absoluteY="383dp" /> <Button android:id="@+id/mapme" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Map Me!" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" tools:layout_editor_absoluteY="460dp" /> </LinearLayout> <TextView android:id="@+id/thelabel" android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="center" android:text="Hello World, Say Something!!!!!" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintRight_toRightOf="parent" app:layout_constraintTop_toTopOf="parent" /> <EditText android:id="@+id/etLatitude" android:layout_width="match_parent" android:layout_height="wrap_content" android:ems="10" android:hint="Latitude" android:inputType="numberDecimal" android:text="40.9241164" /> <EditText android:id="@+id/etLongitude" android:layout_width="match_parent" android:layout_height="wrap_content" android:ems="10" android:hint="Longitude" android:inputType="numberDecimal" android:text="-74.7213913" /></LinearLayout>

    もっと表示もっと表示アイコン

    LinearLayout内には、水平レイアウトとして編成された2番目のLinearLayoutがあります。 この内部レイアウトには、ボタンウィジェットのペアが含まれています。 水平方向のLinearLayoutの下には、他の開発環境でラベルに例えることができる単一のTextView要素があります。 ATextViewは、編集できない静的テキストを表します。 TextViewの下には、数値入力を使用するように構成された2つのEditTextウィジェットがあります。 これらの入力要素は、緯度と経度の値をキャプチャするために使用され、その後、以下に示すようにマッピングアプリケーションに渡されます。

    各ビュー要素には、androidの名前空間に属性があることに注意してください。 一部の属性は、すべてのビューに共通しています。android:layout_widthおよびandroid:layout_height属性など。 これらの属性で使用できる値は次のとおりです:

    • Match Parent-これは、利用可能な最大のスペースを取るためにビュー要素を拡張します。 これはまた、”ストレッチ”を意味すると考えることができます。”
    • コンテンツをラップ–このオプションは、要素がその子ビューまたはテキストや画像などの属性を含むのに十分なだけ拡張されます。

    Androidアプリケーションのデプロイメント記述子(AndroidManifest.xml)

    xmlファイルは、Androidアプリケーションのデプロイメント記述子を表します。 このファイルには、アプリケーションに含まれているアクティビティ、サービス、コンテンツプロバイダー、または受信者が、アプリケーションでサポートされている適切なIntentFiltersとともに一覧表示されます。 ここに完全なAndroidManifestがあります。サンプルアプリケーション用のxmlファイル:

    <?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.navitend.saysomething"> <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" android:theme="@style/AppTheme"> <activity android:name=".MainActivity" android:label="@string/app_name" android:theme="@style/AppTheme.NoActionBar"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application></manifest>

    アイコンをもっと表示

    <manifest>タグは、本質的にこのパッケージからクラスをインポートしています。 このファイル内のすべての完全修飾されていないクラスは、package属性で識別されたパッケージ内にあります。

  • <application>タグには、アプリケーションのリソースからリソースを参照する属性があります。 さまざまな識別子の前に@記号があることに注意してください。 これは、ツールチェーンが各リソースのアプリケーションのリソースのそれぞれのフォルダを調べるためのヒントです。
  • <アクティビティ>タグには、次の属性とメモの値が含まれています:

    • android:nameは、このアクティビティを実装するJavaクラスを表します
    • android:labelは、アプリケーションの名前を含みます。 文字列リソースのいずれかを参照していることに注意してください。 文字列。xmlファイルには、アプリケーションのローカライズされた文字列が含まれています。
    • <intent-filter>は、サンプルアプリケーションで使用できるIntentFilterを表します。 この特定のアクション属性とカテゴリ属性のセットは、Androidアプリケーションで見られる最も一般的なIntentFilterです。 このフィルタは、基本的に、メインアクション(またはエントリポイント)を実装し、OSの現在動作している起動画面で利用できることを示しています。 簡単に言えば、これは、Androidデバイス上のアプリケーションの主要なリストからアプリケーションとして起動できることを意味します。
  • ステップ3: アプリケーションのビルド

    アプリケーションをビルドするには、Android Studioのメニューでレンチアイコン(私にはハンマーのように見えます)を選択します。

    前に紹介したように、ビルドプロセスは、任意の特定のアプリケーション用にカスタマイズすることができるマルチステッププロセスです。 このチュートリアルでは、ビルドプロセスは変更しません。 ビルドプロセスの出力は次のようになります:

    Android Studioでのビルド出力のスクリーンショット

    ビルドプロセスを示すために、ソースコードにエラーを導入しました; 次の図に示すように、メソッドfindViewByIdの名前に余分なスペースを追加しました:

    ソースコードの意図的なエラーのスクリーンショット

    これにより、ビルドプロセスによって取得され、Android Studioのビルド結果ウィンドウの詳細に表示される構文ま ソースコードのエラーを修正すると、アプリケーションは適切にビルドされ、エラーは問題リストから削除されます。

    ステップ4: アプリケーションの実行

    アプリケーションのコンパイルが正常に完了したので、サンプルアプリケーションを実行します。

    このチュートリアルでは、実際のデバイスを必要とせずにアプリケーションをテストするためのエミュレータを構成する手段としてAVD Managerが導入されま エミュレータを使用してアプリケーションを実行すると、多数の高価なデバイスを購入する必要なくテストが可能になるため、特に便利です。

    エミュレータ、またはより適切にAndroid仮想デバイス(AVD)を設定するには、ツール>AVDマネージャを選択します。 または、単に再生(実行)アイコンをクリックしてください。

    次の図に示すように、USBケーブルで接続された実際のデバイスまたは使用可能なAVDインスタンスのいずれかを選択できるウィンドウが起動します:

    展開ターゲットの選択ダイアログのスクリーンショットと新しい仮想デバイスの作成丸で囲まれた

    接続されているデバイスがある場合、接続されたデバ または、使用可能な仮想デバイスのいずれかを選択します。 前の図では、Nexus One API Pという名前のAVDが1つ定義されています。 新しいAVDを作成するには、[新規仮想デバイスの作成Create New Virtual Device]ボタンを選択します。

    最後に、OKをクリックして、選択したデプロイメントターゲットでアプリケーションを起動します。 AVDまたはエミュレータは、サンプルアプリケーションが実行された状態で起動します。

    エミュレータまたはAVDで実行されているサンプルアプリのスクリーンショット

    ステップ5:エミュレータでアプリケーションをテストする

    アプリケーションがエミュレータで実行されているので、舞台裏で何が起こっているかを見てみましょう。 Android Studioで、”表示>ツールウィンドウ”を選択します。 それらのそれぞれは、それ自体がトピックですが、我々は、これらのツールオプションのほんのカップルを強調表示します。

    Android Studio Tools

    まず、CPU、メモリ、およびネットワークトラフィックの実行チャートを示すAndroidプロファイラを見てください。 Androidのプロファイラは、異なるデバイス/エミュレータインスタンスとそれぞれの実行中のプロセスを切り替えるために私たちを可能にします。 次の図は、エミュレーター-インスタンスで実行されているサンプル-アプリケーションのメトリクスを示しています。

    実行中のサンプルアプリ用のAndroidプロファイラのスクリーンショット

    ロギングは、どのプラットフォーム上の開発者にとっても便利なツールです。 Android開発者の場合、ツールの名前はLogCatです。

    LogCatは、VMで実行されているアクティビティの実行中のログファイルです。 アプリケーションは、Logのような単純なコード行でこのリストに独自のエントリを作成できます。ここで、tagmessageは両方ともJava文字列です。 Logクラスはandroidの一部です。ユーティルログパッケージ。

    実行中のサンプルアプリのLogCatのスクリーンショット

    もう一つの便利なツールは、エミュレータのファイルシステムへのアクセスを許可するfile explorerです。 次の図は、チュートリアルのサンプルアプリケーションがエミュレーターに配置されている場所を示しています。

    デバイスファイルエクスプローラのスクリーンショット

    ユーザーアプリケーションは/data/appにデプロイされ、Android組み込みアプリケーションは/system/appディ

    Androidアプリケーションの本格的なデバッグは、このチュートリアルの範囲を超えていますが、Android Studioは、関数呼び出しのステップインやステップオーバーなどで期待できる最新のアプリケーションデバッグツールをすべてサポートしていることを保証しています。

    サンプルアプリケーションのテスト

    ヒット私をタップ! ボタンを押すと、ラベルの内容が”痛い!”

    をタップした後、エミュレータ内のサンプルアプリのスクリーンショットは、マップ上のMeをタップ! ボタンを押すと、EditTextウィジェットに含まれている指定された緯度と経度でマッピングアプリケーションが起動されます。

    map Meボタンをタップした後のエミュレータでのサンプルアプリのスクリーンショット

    ボタンの配線はMainActivityにあります。xmlコード。 特に、緯度と経度の値が抽出され、インテントにパッケージ化され、その後マッピングアプリケーションを起動するために使用される方法に注意してくださ

    このチュートリアルでは、Androidプラットフォーム、Android Studio、およびAndroid開発の重要な要素を紹介しました。 これで、独自のAndroidアプリケーションを作成する準備ができているはずです。

    あなたはもっと何かの準備ができていますか? このチュートリアルでは、Bluetooth Low Energy(BLE)Apiを使用してIoT接続デバイスを構築します。

    Leave a Reply

    メールアドレスが公開されることはありません。