SlideShare a Scribd company logo
はじめてのAndroid開発

     2011/12/08 井谷裕紀
はじめに
 今回、環境構築の話はしません。
 環境構築はここを見れば大丈夫!
http://www.android-
group.jp/index.php?%A5%EF%A1%BC%A5%AD%A5
%F3%A5%B0%A5%B0%A5%EB%A1%BC%A5%D7
%2F%A5%CF%A5%F3%A5%BA%A5%AA%A5%F3%
A5%BB%A5%C3%A5%B7%A5%E7%A5%F3
みなさん
Androidは好きですか?
愚問でしたね。
そんなAndroid大好きなみなさん
Androidと言えば
なにを思い浮かべますか?
愚問でしたね。
機種依存
というわけで
まずは機種依存の話から
そのためには、
Androidのディレクトリ構成を
 理解する必要があります。
0 ディレクトリ構成

              プログラムファイル

               自動生成ファイル

                 Google API




             リソース(xml, 画像, etc.)




             アプリケーションを定義するファイル
1. 機種依存
1-1 よくある機種依存
   解像度、dpi
   カメラ
   メール
   etc.



      今回はまったの
      が、、、、、
1-2-1 端末による解像度・dpiの違い
   Androidは端末によって解像度やdpiが違います
                     ※dpi = dot per inchの略。ピクセル解像度。
       800x480
       960x540
       854x480
       480x320
       etc.




    端末ごとの違いをどう吸収するか。
    もっとも影響を受けるのはレイアウトで
    す。
1-2-2 解像度・dpi別のリソースの管理

   異なる解像度・dpiを吸収するためのもっともシンプ
    ルな方法は、それら毎に画像等のリソースを管理す
    ることです。

   Androidには、複数のリソースを用意することで、そ
    の端末のdpiや解像度に合った適切なリソースを自動
    で読み込む仕組みがあります。
1-2-3 具体的な方法
           res/drawable-ldpi      100〜140dpi
          res/drawable-mdpi       140〜180dpi
           res/drawable-hdpi      190〜250dpi
          res/drawable-nodpi   DPIに依存しない画像


                      さらに応用すると・・・


            res/drawable-320dpi      320dpi
              res/drawble-hdpi-    190〜250dpi
                  800x480         解像度:800x480
              res/drawble-hdpi-    190〜250dpi
                  854x480         解像度:854x480
              res/drawble-hdpi-    190〜250dpi
                  960x540         解像度:960x540
あるAndroiderは言いました。
普通に書けば、
機種依存問題なんてまず起こらない。
    ただしカメラ以外。
Androidには機種依存を吸収する仕組みが
      ちゃんと用意されています。
    その使い方さえ押さえておけば、
機種依存でそこまで深刻な問題は起きません。
ただし
カメラ以外。
2. Android4種の神器
2-1 Android4種の神器
   Activity
       ユーザー・インタフェース(UI)を持つAndroidのア
        プリケーション・プログラム
   Service
       UIを持たず,連続的に情報を提供し続けるプログラ
        ム
   BroadcastReciever
       外部のイベントに対して何らかの反応を返す
   ContentProvider
       データベースなど,特定の条件下においてデータを
        提供する
2-2-1 Activityとは
   主にViewのことを指します。
   Android上で表示されている画面はActivityです。




            Activity
2-2-2 Activityのライフサイクル


Activityには、生成から始
まり、破棄で終わるまでの
ライフサイクルがありま
す。
2-2-3 Activityを作成するには
   Activityクラスを継承し、onCreate()メソッドを
    Overrideします。
public class SampleActivity extends Activity {

    @Override
    public void onCreate(Bundle savedInstanceState
    {
      super.onCreate(savedInstanceState);
      // ViewをLayoutを定義しているxmlからセット
      setContentView(R.layout.main);
    }
}
2-3-1 Serviceとは
   主にバックグラウンドで動作し続けるプログラムを
    指します。

   例)
       タイマー機能
       音楽再生
       目覚まし機能
       etc.
2-3-2 Serviceのライフサイクル

Serviceにもライフサイ
クルがあります。
2-3-3 ServiceのBind
   Serviceは通常、一度起動するとActivityからは停止す
    ることしかできません。
   Bindという機能を使うと、ActivityからServiceが提供
    するメソッドを実行することができます。
2-3-4 Serviceを作成するには
       Serviceクラスを継承し、onCreate(), onBind()を
        Overrideします。
    public class SampleService extends Service
    {
             public void onCreate()
             {
                     super.onCreate();
             }

          @Override
          public IBinder onBind(Intent arg0)
          {
            // bind機能は使用しないのでnullを返す
            return null;
          }
    }
2-4-1 BroadcastRecieverとは
   外部からのイベントに応じて処理が発生するプログ
    ラム
       電話が着信したときに何らかの処理を実行する
       端末を再起動した際に何らかの処理を実行する
       etc.
2-4-2 BroadcastRecieverを作成するには
   BroadcastRecieverクラスを継承し、onRecieve()を
    Overrideします。

    public class PgcwSampleReciever extends BroadcastReceiver
    {
             @Override
             public void onReceive(Context context, Intent intent)
             {
             }
    }
2-5 ContentProviderとは
   データを保存する際に使用します。
   端末内のアプリ専用エリアに作成され、アクセス権
    限を定義すれば他のアプリからも使用可能です。
   システムのデータもこれで作成されています。
3. Intent
3-1 Intentとは
   プロセスやスレッドを跨いだ処理を簡単に実現する
    ものです。
       Activityを起動
       Serviceを起動
       etc.
3-2 明示的Intentと暗黙的Intent
   明示的Intent
     直接起動したいClassを指定して呼び出す
    Intent intent = new Intent(context, class);
   暗黙的Intnent
     明示的に起動させるClassを指定せずにIntentのパラメー
      タに起動するClassをある程度推測できるだけの情報を入
      れておくと、該当するClassが呼び出される
    Intent intent = new Intent();
    intent.setAction(Intent.ACTION_VIEW);
    intent.setData(Uri.parse(“http://kayac.com”));
    startActivity(intent);
4. Out of memory
4-1 メモリとの戦い
   Android開発はメモリとの戦いと言っても過言ではあ
    りません。
   必ずと言っていいほど、メモリ問題にぶつかりま
    す。

                   そのほとんどの原因が・・・




             画像
4-2 メモリリーク
     Androidはメモリを明示的に開放することはできませ
      ん
      できないといういい方は正しくないかもしれません。
      メソッドは用意されているのですが、あてになりません。

                     どうするか



        来たるべきGCの時に備えて、
とにかく無駄に参照し続けるオブジェクトを持たないことです。
4-3 開発に入る前のポイント
   DEと相談しましょう
       画像を多用しなくてもリッチに見える工夫
       画像のダイエット処理
           画像をダイエットさせるだけで、とっても効果あります


   参考になるURL
       http://www.textdrop.net/soft/android-avoiding-memory-
        leaks/
       http://andbrowser.com/development/knowhow/65/eclipse-
        android-memory-leak-mat/
       http://tomokey.blogspot.com/2011/05/android.html
5. サンプルアプリの紹介
感想
   とってもよくできています。
   とっつきにくさは感じませんでした。
   JAVAを対して知らない僕でもそれなりに開発はでき
    ました!
Android楽しいよ!!
ご静聴ありがとうございました。

More Related Content

PDF
楽しく学ぼう公開鍵暗号方式
PDF
Tokyo GTUG Bootcamp2010
PDF
Android0422
PDF
みゆっき☆Think#3 「androidに触ってみるよ!」
ODP
はじめてのAndroid in 高知
PPT
アプリ開発・端末毎の解像度の違いを吸収する方法 Android Bazaar and Conference 2011 Summer
PDF
Android Lecture #01 @PRO&BSC Inc.
PPTX
Archive: Android アプリ開発入門(2015/6/19 社内勉強会)
楽しく学ぼう公開鍵暗号方式
Tokyo GTUG Bootcamp2010
Android0422
みゆっき☆Think#3 「androidに触ってみるよ!」
はじめてのAndroid in 高知
アプリ開発・端末毎の解像度の違いを吸収する方法 Android Bazaar and Conference 2011 Summer
Android Lecture #01 @PRO&BSC Inc.
Archive: Android アプリ開発入門(2015/6/19 社内勉強会)

Similar to 初めてのAndroid開発 (20)

PDF
Android api-levels
KEY
[ABC2012S]Android2x/3x/4x対応アプリ開発Tips
PPTX
0720 abc seminar
PDF
アプリリリース後に後悔しないための20のこと
PPTX
Androidプログラミング入門
ODP
はじめてのAndroid
ODP
OSC2011 Androidハンズオン
PPS
專訪李光耀
PDF
Android4.2徹底解剖!
ODP
はじめてのAndroid開発
PDF
Android multiscreen
PPTX
勉強会資料Out ofmemory
PDF
(デ部発表用抜粋版)プログラマとデザイナが共有すべきUIに関するAndroidの10の機能
PDF
Weekend Androidのススメ
PDF
冬だからAndroid再入門
PPTX
Android アプリケーション開発応用
PDF
2015年のAndroidアプリ開発入門 - ABCD 2015 Kanazawa
PDF
Androidアプリの魅力的なインターフェース〜本当にiOSアプリのデザインを流用するだけでいいの?〜
PDF
プログラマとデザイナが共有すべきUIに関するAndroidの10の機能
PPT
Android Hacks - 合宿 Activity
Android api-levels
[ABC2012S]Android2x/3x/4x対応アプリ開発Tips
0720 abc seminar
アプリリリース後に後悔しないための20のこと
Androidプログラミング入門
はじめてのAndroid
OSC2011 Androidハンズオン
專訪李光耀
Android4.2徹底解剖!
はじめてのAndroid開発
Android multiscreen
勉強会資料Out ofmemory
(デ部発表用抜粋版)プログラマとデザイナが共有すべきUIに関するAndroidの10の機能
Weekend Androidのススメ
冬だからAndroid再入門
Android アプリケーション開発応用
2015年のAndroidアプリ開発入門 - ABCD 2015 Kanazawa
Androidアプリの魅力的なインターフェース〜本当にiOSアプリのデザインを流用するだけでいいの?〜
プログラマとデザイナが共有すべきUIに関するAndroidの10の機能
Android Hacks - 合宿 Activity
Ad

初めてのAndroid開発