- プロジェクトマネージャ(大阪)
- Webエンジニア(大阪PHP)
- ★東京・大阪/CS/MG
- 他64件の職種
-
開発
- Webエンジニア(大阪PHP)
- エンジニアリングマネージャ
- ブリッジSE/オフショア開発
- PM(楽楽シリーズ)
- テックリード(大阪/PHP)
- フロントエンドエンジニア
- ブリッジSE(大阪)
- エンジニアオープンポジション
- Javaエンジニア(楽楽明細)
- Webエンジニア
- Webエンジニア
- フロントエンド(リーダー)
- モバイルエンジニア
- Android/iOSアプリ
- 社内SE(大阪/セキュリティ)
- 社内SE(大阪/インフラ)
- 社内SE(大阪/クラウド)
- インフラエンジニア
- 品質管理/技術支援チーム
- QAリーダー/マネージャー
- 戦略企画・データマネジメント
- システム企画
- AI/機械学習エンジニア
- データマネジメント・戦略企画
- 社内SE(データエンジニア)
- UIデザイナー(リーダー)
- UI/UXマネージャー
- UIデザイナー
-
ビジネス
- プロジェクトマネージャ(大阪)
- 導入支援/導入コンサルタント
- PdM(楽楽シリーズ)
- 開発マネージャー
- プロダクトセキュリティ
- PMMプロダクトマーケティング
- アシスタントマネージャー
- 経営企画
- データマネジメント・マーケ戦略
- 法務
- 経営企画/事業分析
- 内部監査(業務監査)
- 法人営業
- ITセールス
- 営業企画オープンポジション
- ITセールス(福岡)
- ITセールス(名古屋)
- ITセールス(大阪)
- 法人営業/カスタマーサクセス
- フィールドセールス
- セールスマネージャー
- ビジネスオープン
- ITセールス経験者
- 製品企画/法要件(楽楽明細)
- オンラインマーケティング
- 営業推進リーダー(楽楽精算)
- ブランド企画・ブランディング
- ブランド企画
- マーケティングリーダー
- マーケティング担当
- オフラインマーケティング
- 製品企画/プロダクトマーケ
- CSマーケティング
- 企画マーケティング
- その他
Android Studioで天気情報を表示するアプリを作ってみた
はじめに
kuwa_38です。以前Android Studioを使ってみたので、その続きとして天気情報を表示するアプリを実装してみました。簡単に実装できるかと思いきや、AndroidではAPI接続に非同期処理(AsyncTask
)を用いる必要があるらしく苦戦しました。この記事では今回苦戦した非同期処理も含め、天気情報を表示するアプリについて、実装に必要なこと、実装したコードを記載します。
前回実装した処理
今回は下記の実装に付け加える形で実装したため記載しておきます。
Android Studioを使ってHello Worldをやってみた
- 初期画面の表示
- ボタンを押すとテキストが変わる
今回実装した処理
- ボタンを押すとその日の大阪の天気が表示される
利用したAPI
Weather Hacksを利用させて頂きました。GETでエンドポイントにアクセスすることで、パラメータcity
で設定した都市の天気をJSONで返してくれます(因みに270000
は大阪です)。
補足:jqを活用してAPIレスポンス等から欲しい情報だけを抽出する【初級編】
Androidのバージョンに伴う注意点
それでは実装、といきたいところですが、先に私がハマった注意点について述べておきます。
- メインスレッドではネットへ接続する処理ができない
- 行おうとすると
android.os.NetworkOnMainThreadException
が発生します - 参考:【Android】メインスレッド(要は画面処理)でhttpリクエスト投げようとしたら怒られた。 〜NetworkOnMainThreadException〜
- 行おうとすると
- HttpClientが使えない
実装概要
コードなどは次の節に記述します。この節では実装すべきことについて大まかに述べます。
※ 今回は実機デバックを対象とします(エミュレータを使用する場合は、エミュレータのwifi設定などが必要です)。
ネット接続を許可する
AndroidManifest.xml
に下記を追記
ボタンを押すと特定の処理を実行する
- 前回の記事を参照ください
APIサーバに接続する
- 注意で述べたようにメインスレッドでは接続できませんので、実行用のクラスを作成してあげます
AsyncTask
を継承するクラス(今回はAsyncHttpRequest
というクラス名にしました)を作成する- 作成したクラス内に
doInBackground
(非同期で行いたい処理を記述する)メソッドを実装する - メインスレッド(
MainActivity.java
)で1のクラスをインスタンス化し、execute
メソッドを呼び出す
→doInBackground
が呼び出される
受け取ったJSONを加工する
- 受け取った文字列をJSONObjectでパースし、天気情報を取り出します
天気情報を表示する
AsyncTask
を継承するクラスでonPostExecute
(非同期処理が終わった後に実行される)メソッドを実装し、メインスレッドのラベルを変更する
実装例
下記にMainActivity.java
、AsyncHttpRequest.java
(AsyncTask
を継承するクラス)を載せますので、実装してみたい方は参考にして下さい。
※ AndroidManifest.xml
は1行追記したのみですので載せていません
MainActivity.java
AsyncHttpRequest
おわりに
本記事ではAndroid Studioを使い、天気情報を表示するAndroidアプリの実装方法を紹介しました。まだまだ実用には遠いクオリティですが、非同期処理やjqコマンドなど知らなかったことを学ぶいい機会になりました。自分の学習目的で始めた部分が大きいですが、Androidアプリ開発の初心者や非同期処理の実装で困っている方の手助けになれば幸いです。