Mobile Software Engineering Crash Course - C04 Android Cont.

25
Mohammad Shaker FIT of Damascus - AI dept. [email protected] Mobile SE – August 2012 Mobile Software Engineering L04 – Android Cont.

Transcript of Mobile Software Engineering Crash Course - C04 Android Cont.

Page 1: Mobile Software Engineering Crash Course - C04 Android Cont.

Mohammad Shaker

FIT of Damascus - AI dept.

[email protected]

Mobile SE – August 2012

Mobile

Software

Engineering

L04 – Android Cont.

Page 2: Mobile Software Engineering Crash Course - C04 Android Cont.

ActivitiesStarting Another Activity

Page 3: Mobile Software Engineering Crash Course - C04 Android Cont.

Intentan object that provides runtime binding between separate

components (such as two activities)

Page 4: Mobile Software Engineering Crash Course - C04 Android Cont.

Intentcarry a collection of various data types as key-value pairs

called extras through putExtra()

Page 5: Mobile Software Engineering Crash Course - C04 Android Cont.

It’s a good practice..to define keys for intent extras using your app's package name as a prefix.

This ensures they are unique, in case your app interacts with other apps.

Page 6: Mobile Software Engineering Crash Course - C04 Android Cont.

Starting Another Activityhttp://developer.android.com/training/basics/firstapp/starting-activity.html#BuildIntent

Project Attached

Page 7: Mobile Software Engineering Crash Course - C04 Android Cont.

Starting Another Activity

public final static String EXTRA_MESSAGE = "com.example.intetsample.MESSAGE";

public void sendMessage(View view) {

Intent intent = new Intent(this, DisplayMessageActivity.class);

EditText editText = (EditText) findViewById(R.id.editText1);

String message = editText.getText().toString();

intent.putExtra(EXTRA_MESSAGE, message);

startActivity(intent);

}

Page 8: Mobile Software Engineering Crash Course - C04 Android Cont.

AndroidManifest.xml

Page 9: Mobile Software Engineering Crash Course - C04 Android Cont.

AndroidManifest.xml<application

android:icon="@drawable/ic_launcher"

android:label="@string/app_name"

android:theme="@style/AppTheme" >

<activity

android:name=".MainActivity"

android:label="@string/title_activity_main" >

<intent-filter>

<action android:name="android.intent.action.MAIN" />

<category android:name="android.intent.category.LAUNCHER" />

</intent-filter>

</activity>

<activity

android:name=".DisplayMessageActivity"

android:label="@string/title_activity_display_message" >

<meta-data

android:name="android.support.PARENT_ACTIVITY"

android:value="com.example.intetsample.MainActivity" />

</activity>

</application>

Page 10: Mobile Software Engineering Crash Course - C04 Android Cont.

Managing the Activity

Life Cycle

Page 11: Mobile Software Engineering Crash Course - C04 Android Cont.
Page 12: Mobile Software Engineering Crash Course - C04 Android Cont.

Destroy the activityonDestroy()

Page 13: Mobile Software Engineering Crash Course - C04 Android Cont.

Destroy the activity

Page 14: Mobile Software Engineering Crash Course - C04 Android Cont.

onPasue()

@Override

public void onPause() {

// Always call the superclass method first

super.onPause();

// Release the Camera because

// we don't need it when paused

// and other activities might need to use it.

if (mCamera != null) {

mCamera.release()

mCamera = null;

}

}

Page 15: Mobile Software Engineering Crash Course - C04 Android Cont.

onResume()

@Override

public void onResume() {

// Always call the superclass method first

super.onResume();

// Get the Camera instance as the activity

// achieves full user focus

if (mCamera == null) {

// Local method to handle camera init

initializeCamera(); }

}

Page 16: Mobile Software Engineering Crash Course - C04 Android Cont.

Recreating activityonSaveInstanceState

Page 17: Mobile Software Engineering Crash Course - C04 Android Cont.

Storage – DatabaseSqlite3

Page 18: Mobile Software Engineering Crash Course - C04 Android Cont.

Draggable stick project sample attached

Page 19: Mobile Software Engineering Crash Course - C04 Android Cont.

OpenGL ES

Page 20: Mobile Software Engineering Crash Course - C04 Android Cont.

How can we animate?

Page 21: Mobile Software Engineering Crash Course - C04 Android Cont.

'Must Override a Superclass

Method' Errors after importing a

project into Eclipse Problemhttp://stackoverflow.com/questions/1678122/must-override-a-superclass-

method-errors-after-importing-a-project-into-eclips

Page 22: Mobile Software Engineering Crash Course - C04 Android Cont.

@Override

public boolean onTouchEvent(MotionEvent e) {

float x = e.getX(); float y = e.getY();

switch (e.getAction()) {

case MotionEvent.ACTION_MOVE:

float dx = x - mPreviousX; float dy = y - mPreviousY;

// reverse direction of rotation above the mid-line

if (y > getHeight() / 2) { dx = dx * -1 ; }

// reverse direction of rotation to left of the mid-line

if (x < getWidth() / 2) { dy = dy * -1 ; }

mRenderer.mAngle += (dx + dy) * TOUCH_SCALE_FACTOR;

// = 180.0f / 320

requestRender();

}

mPreviousX = x; mPreviousY = y;

return true;

}

Page 23: Mobile Software Engineering Crash Course - C04 Android Cont.

Let’s get our hands dirty

with code!

Page 24: Mobile Software Engineering Crash Course - C04 Android Cont.

Advanced Training• Making Your App Location Aware• Performing Network Operations• Transferring Data Without Draining the Battery• Syncing to the Cloud• Designing for Multiple Screens• Improving Layout Performance• Managing Audio Playback• Optimizing Battery Life• Creating Custom Views• Adding Search Functionality

• Remembering Users• Sharing Content• Capturing Photos• Maintaining Multiple APKs• Creating Backward-Compatible UIs• Developing for Enterprise• Monetizing Your App

• Designing Effective Navigation• Implementing Effective Navigation• Designing for TV• Displaying Bitmaps Efficiently• Implementing Accessibility• Displaying Graphics with OpenGL ES

Page 25: Mobile Software Engineering Crash Course - C04 Android Cont.

See you nxt time!