Android development

Содержание

Слайд 2

ANDROID HISTORY Android is an open source and Linux-based Operating System

ANDROID HISTORY

Android is an open source and Linux-based Operating System for mobile devices

such as smartphones and tablet computers. Android was developed by the Open Handset Alliance, led by Google, and other companies.
The first beta version of the Android Software Development Kit (SDK) was released by Google in 2007 where as the first commercial version, Android 1.0, was released in September 2008.
Слайд 3

Слайд 4

REQUIRED TOOLS Java JDK5 or later version Java Runtime Environment (JRE)

REQUIRED TOOLS

Java JDK5 or later version
Java Runtime Environment (JRE) 6
Android SDK
Android

Studio
Eclipse IDE for Java Developers
ADB Driver
Слайд 5

Слайд 6

PROJECT FOLDERS src - This contains the .java source files for

PROJECT FOLDERS

src - This contains the .java source files for your project.

By default, it includes a MainActivity.java source file having an activity class that runs when your app is launched using the app icon.
res/drawable - This is a directory for drawable objects that are designed for high-density screens.
res/layout - This is a directory for files that define your app's user interface.
res/values - This is a directory for other various XML files that contain a collection of resources, such as strings and colors definitions.
AndroidManifest.xml - This is the manifest file which describes the fundamental characteristics of the app and defines each of its components.
Слайд 7

ACTIVITIES An activity represents a single screen with a user interface,

ACTIVITIES

An activity represents a single screen with a user interface, in-short

Activity performs actions on the screen. For example, an email application might have one activity that shows a list of new emails, another activity to compose an email, and another activity for reading emails. If an application has more than one activity, then one of them should be marked as the activity that is presented when the application is launched.
public class MainActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main);
}
}
Слайд 8

Слайд 9

LAYOUT android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MainActivity" > android:layout_width="wrap_content“ android:layout_height="wrap_content" android:layout_centerHorizontal="true" android:layout_centerVertical="true" android:text="@string/hello_world"/>

LAYOUT

android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity" >
android:layout_width="wrap_content“
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:text="@string/hello_world"/>



Слайд 10

MANIFEST package="com.example.helloworld" android:versionCode="1" android:versionName="1.0" > android:minSdkVersion="8" android:targetSdkVersion="22" /> android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > android:name=".MainActivity“ android:label="@string/title_activity_main" >

MANIFEST

package="com.example.helloworld"
android:versionCode="1"
android:versionName="1.0" >
android:minSdkVersion="8"
android:targetSdkVersion="22" />

/>
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
android:name=".MainActivity“
android:label="@string/title_activity_main" >






Слайд 11

BUILDING WITH GRADLE apply plugin: 'com.android.application' android { compileSdkVersion 23 buildToolsVersion

BUILDING WITH GRADLE

apply plugin: 'com.android.application' android { compileSdkVersion 23 buildToolsVersion "23.0.3" defaultConfig

{ applicationId "com.resentient.hwat" versionCode 2 versionName "1.0.2" } } dependencies { testCompile 'junit:junit:4.12' compile 'com.android.support:appcompat-v7:23.4.0' compile 'com.clarifai:clarifai-api-java:1.2.0' }
Слайд 12

Слайд 13

PASSING DATA BETWEEN ACTIVITIES Ways to pass data between activities: Save

PASSING DATA BETWEEN ACTIVITIES

Ways to pass data between activities:
Save the data

in a database
Save the data in a file
Use Shared preferences
Use Intent
Слайд 14

SHARED PREFERENCES Shared Preferences allow you to save and retrieve data

SHARED PREFERENCES

Shared Preferences allow you to save and retrieve data in

the form of key-value pair. Shared Preferences values will persist across user sessions. Data in shared preferences will be persistent even though user closes the application. You can get values from Shared preferences using getSharedPreferences() method.
SharedPreferences sharedProperties = getSharedPreferences(“MyPreferences”, Context.MODE_PRIVATE);
if (sharedProperties.getBoolean(“LaunchedFirstly”, true)) {
SharedPreferences.Editor e = sharedProperties.edit(); e.putBoolean(“LaunchedFirstly”, false); e.commit();
}
Слайд 15

INTENT An Intent in the Android operating system is a software

INTENT

An Intent in the Android operating system is a software mechanism that allows users to start some actions

or just passing some info between two activities.
Example:
Intent i = new Intent(getApplicationContext(), MyActivity.class);
i.putExtra("name", “Ihor");
i.putExtra("surname", “Sokolyk";
startActivity(i);
 Intent intent = getIntent();
String message = intent.getStringExtra(“name");
Слайд 16

Starting camera example: Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); Uril file =

Starting camera example:
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); Uril file = Uri.fromFile(new File(pathToImage)); intent.putExtra(MediaStore.EXTRA_OUTPUT,

file); startActivityForResult(intent, 100);
@Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { if (requestCode == 100) { if (resultCode == RESULT_OK) { takenPhoto.setImageURI(file); } } }
Слайд 17

Sharing in facebook example: public void shareOnFacebook(View view) { Uri uri

Sharing in facebook example:
public void shareOnFacebook(View view) { Uri uri =

Uri.fromFile(takeScreenshot()); Intent sharingIntent = new Intent(android.content.Intent.ACTION_SEND); sharingIntent.setType("image/*"); sharingIntent.putExtra(Intent.EXTRA_STREAM, uri); setDefaultPackageForIntent(sharingIntent, "com.facebook"); if (sharingIntent.getPackage() != null) { startActivity(sharingIntent); } else { Toast.makeText(getApplicationContext(), “Facebook not installed”, Toast.LENGTH_SHORT).show(); } }
Слайд 18

GET VIEW ELEMENTS FROM ACTIVITY ImageView takenPhoto = (ImageView) findViewById(R.id.imageView); takenPhoto.setImageBitmap(BitmapFactory.decodeResource(getResources(), R.drawable.correct)); takenPhoto.setVisibility(View.INVISIBLE);

GET VIEW ELEMENTS FROM ACTIVITY

ImageView takenPhoto = (ImageView) findViewById(R.id.imageView);
takenPhoto.setImageBitmap(BitmapFactory.decodeResource(getResources(), R.drawable.correct));
takenPhoto.setVisibility(View.INVISIBLE);

Слайд 19

ADDING LISTENERS TO ELEMENTS final Button button = (Button) findViewById(R.id.button_id); button.setOnClickListener(new

ADDING LISTENERS TO ELEMENTS

final Button button = (Button) findViewById(R.id.button_id); button.setOnClickListener(new View.OnClickListener() {

@Override  public void onClick(View v) {    // Perform action on click  }  });
Слайд 20

ON TOUCH AND SWIPE EVENTS @Override public boolean onTouchEvent(MotionEvent event) {

ON TOUCH AND SWIPE EVENTS

@Override
public boolean onTouchEvent(MotionEvent event) { 
    int action =

event.getActionMasked();
    switch (action) {
        case MotionEvent.ACTION_DOWN:
            initialX = event.getX();
            initialY = event.getY();
            Log.d(TAG, "Action was DOWN");
            break;
        case MotionEvent.ACTION_MOVE:
            Log.d(TAG, "Action was MOVE");
            break;
Слайд 21

case MotionEvent.ACTION_UP: float finalX = event.getX(); float finalY = event.getY(); Log.d(TAG,

case MotionEvent.ACTION_UP:
            float finalX = event.getX();
            float finalY = event.getY();
            Log.d(TAG, "Action was UP");
            if

(initialX < finalX) {
                Log.d(TAG, "Left to Right swipe performed");
            }
            if (initialX > finalX) {
                Log.d(TAG, "Right to Left swipe performed");
            }
            if (initialY < finalY) {
                Log.d(TAG, "Up to Down swipe performed");
            }
            if (initialY > finalY) {
                Log.d(TAG, "Down to Up swipe performed");
            }
            break;
}
return super.onTouchEvent(event);
}
Слайд 22

DIALOG WINDOWS final Dialog dialog = new Dialog(this); dialog.requestWindowFeature(Window.FEATURE_NO_TITLE); dialog.setContentView(R.layout.share_dialog); dialog.setCanceledOnTouchOutside(true); dialog.show();

DIALOG WINDOWS
final Dialog dialog = new Dialog(this); dialog.requestWindowFeature(Window.FEATURE_NO_TITLE); dialog.setContentView(R.layout.share_dialog); dialog.setCanceledOnTouchOutside(true); dialog.show();

Слайд 23

CHECK INTERNET CONNECTION ConnectivityManager connectivity = (ConnectivityManager) getApplicationContext().getSystemService(Context.CONNECTIVITY_SERVICE); if (connectivity !=

CHECK INTERNET CONNECTION

ConnectivityManager connectivity = (ConnectivityManager) getApplicationContext().getSystemService(Context.CONNECTIVITY_SERVICE); if (connectivity != null)

{ NetworkInfo info = connectivity.getActiveNetworkInfo(); if (info != null) if (info.getState() == NetworkInfo.State.CONNECTED) { Toast.makeText(getApplicationContext(), “Connected”, Toast.LENGTH_SHORT).show(); } }
Слайд 24

ASYNC TASK class DataLoader extends AsyncTask { @Override protected Void doInBackground(Void...

ASYNC TASK

class DataLoader extends AsyncTask { @Override protected Void

doInBackground(Void... params) { insertLevelsDataIntoDatabase(); return null; } @Override protected void onPostExecute(Void aVoid) { new android.os.Handler().postDelayed( new Runnable() { public void run() { Intent intent = new Intent(getApplicationContext(), WelcomeActivity.class); startActivity(intent); finish(); } }, 2000); super.onPostExecute(aVoid); } }
DataLoader dataLoader = new DataLoader(); dataLoader.execute();
Слайд 25

SQLITE Creating database: public class DatabaseCreator extends SQLiteOpenHelper { public DatabaseCreator(Context

SQLITE

Creating database:
public class DatabaseCreator extends SQLiteOpenHelper { public DatabaseCreator(Context context) {

super(context, “MyDatabase”, null, 1); } @Override public void onCreate(SQLiteDatabase db) { db.execSQL("CREATE TABLE IF NOT EXISTS levels (" + "id integer primary key autoincrement," + "levelId integer NOT NULL," + "question text NOT NULL," + "answer text NOT NULL," + "type text NOT NULL," + "image BLOB default NULL," + "isLevelCompleted integer);"); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { } }
Слайд 26

Inserting data into database: DatabaseCreator dbHelper = new DatabaseCreator(context); SQLiteDatabase db

Inserting data into database:
DatabaseCreator dbHelper = new DatabaseCreator(context);
SQLiteDatabase db = dbHelper.getWritableDatabase();
ContentValues

cv = new ContentValues();
cv.put(“levelId”, 1); cv.put(“question”,”Catch smile”); cv.put(“answer”, “smile”); cv.put(“type”, “emotion”); if (db.update(“levels”, cv, “levelId = " + 1, null) == 0) { db.insert(“levels”, null, cv); }
cv.clear();
Слайд 27

Fetching data from database: DatabaseCreator dbHelper = new DatabaseCreator(context); SQLiteDatabase db

Fetching data from database:
DatabaseCreator dbHelper = new DatabaseCreator(context);
SQLiteDatabase db = dbHelper.getWritableDatabase();
Cursor

cursor = db.rawQuery("SELECT * FROM levels WHERE levelId = 1", null);
if (cursor.moveToFirst()) { do { levelQuestion = cursor.getString(cursor.getColumnIndex(“question”)); levelAnswer = cursor.getString(cursor.getColumnIndex(“answer”)); levelType = cursor.getString(cursor.getColumnIndex(“type”)); correctImage = cursor.getBlob(cursor.getColumnIndex(“image”)); } while (cursor.moveToNext()); } cursor.close();