SlideShare a Scribd company logo
Basic Programming
Dialogs
by Eakapong Kattiya
Monday, July 15, 13
by Eakapong Kattiya
Toasts
- Small popup
- Automatically disappear
- Timeout :TOAST_LONG / TOAST_SHORT
Toast.makeText(getApplicationContext(),
	 "Message saved as draft,
	 	 	 	 	 Toast.LENGTH_LONG).show();
Monday, July 15, 13
by Eakapong Kattiya
Alerts
Alerts without title bar
Alerts with title bar
Monday, July 15, 13
by Eakapong Kattiya
Basic Buttons
Buttons
Borderless Buttons
Buttons
Monday, July 15, 13
public void showAlert(){
ContextThemeWrapper wrapper = new ContextThemeWrapper(this, android.R.style.Theme_Holo);
	
AlertDialog.Builder builder = new AlertDialog.Builder(wrapper);
	 builder.setMessage("Unfortunately,the process com.android.phone has stopped");
	 builder.setPositiveButton("OK",null);
	 builder.setNegativeButton("Report", new DialogInterface.OnClickListener() {
	 @Override
	 public void onClick(DialogInterface dialog, int which) {
	 	 //show Report Activity
	 }
	 });
	 builder.create().show();
}
by Eakapong Kattiya
AlertDialog :Alerts without title bar
Monday, July 15, 13
public void showAlertWithTitleBar(){
ContextThemeWrapper wrapper = new ContextThemeWrapper(this, android.R.style.Theme_Holo);
	
AlertDialog.Builder builder = new AlertDialog.Builder(wrapper);
builder.setIcon(android.R.drawable.ic_dialog_alert);
builder.setTitle("Erase USB Storage ?");
	 builder.setMessage("You’ll lose all photos and media!");
	 builder.setPositiveButton("Erase", new DialogInterface.OnClickListener() {
	 @Override
	 public void onClick(DialogInterface dialog, int which) {
	 	 //do Report Activity
	 }
	 });
	 builder.setNegativeButton("Cancel", null);
	 builder.create().show();
}
by Eakapong Kattiya
AlertDialog :Alerts with title bar
Monday, July 15, 13
by Eakapong Kattiya
Dialogs
1. Optional Title
2. Content area
3.Action button
Monday, July 15, 13
by Eakapong Kattiya
Text Fields : EditText
Single line &
Multi line
Text field types
Text selection
Monday, July 15, 13
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setIcon(R.drawable.ic_layer);
builder.setTitle("Prompt user input");
	 	
builder.setMessage("Please type a message.");
// Set an EditText view to get user input
final EditText input = new EditText(this);
builder.setView(input);
	 	
builder.setPositiveButton("OK", new DialogInterface.OnClickListener() {
	 @Override
	 public void onClick(DialogInterface dialog, int which) {
	 	 Log.i("AlertDialog","input text =" + input.getText().toString());
	 }
});
builder.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
	 @Override
	 public void onClick(DialogInterface dialog, int which) {
	 }
});
builder.create().show();
}
by Eakapong Kattiya
AlertDialog : Prompt user input
Monday, July 15, 13
by Eakapong Kattiya
Switches
Radio Buttons
On/Off Switches
Checkboxes
Monday, July 15, 13
String[] items = {"Notification", "Music", "Location"};
boolean[] itemsChecked = new boolean[items.length];
AlertDialog.Builder builder = new AlertDialog.Builder(this);
	 builder.setIcon(R.drawable.ic_layer);
	 builder.setTitle("Multi Choice Items");
	 builder.setPositiveButton("OK",
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
	 	 }
	 });
	 builder.setNegativeButton("Cancel",
new DialogInterface.OnClickListener() {
@Override
	 public void onClick(DialogInterface dialog, int which) {
	 }
	 });
	 builder.setSingleChoiceItems(items,-1,
new DialogInterface.OnClickListener() {
	 @Override
	 public void onClick(DialogInterface dialog, int item) {
	 	 }
	 });
	 builder.create().show();
}
by Eakapong Kattiya
AlertDialog : Single choice dialog
Monday, July 15, 13
String[] items = {"Notification", "Music", "Location"};
boolean[] itemsChecked = new boolean[items.length];
AlertDialog.Builder builder = new AlertDialog.Builder(this);
	 builder.setIcon(R.drawable.ic_layer);
	 builder.setTitle("Multi Choices Dialog");
	 builder.setPositiveButton("OK",
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
	 	 }
	 });
	 builder.setNegativeButton("Cancel",
new DialogInterface.OnClickListener() {
@Override
	 public void onClick(DialogInterface dialog, int which) {
	 }
	 });
	 builder.setMultiChoiceItems(items, itemsChecked,
new DialogInterface.OnMultiChoiceClickListener() {
@Override
	 	 public void onClick(DialogInterface dialog, int which, boolean isChecked) {
	 	 }
	 });
	 builder.create().show();
}
by Eakapong Kattiya
AlertDialog : Multi choices dialog
Monday, July 15, 13
by Eakapong Kattiya
Index Scrolling
Scroll Indicator
Scrolls
Monday, July 15, 13
by Eakapong Kattiya
Pickers
Space considerations
Date & Time pickers
Monday, July 15, 13
by Eakapong Kattiya
SharedPreferences : Sample
//Create Preferences
	 SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
	 //Create Preference Editor
	 SharedPreferences.Editor prefEditor = prefs.edit();
	 prefEditor.putBoolean(“key1”, true);
	 prefEditor.putString(“key2”, “value1”);
prefEditor.putString(“key3”, “value2”);
	 //Save Preferences with Editor
	 prefEditor.commit();
	 //Load Preferences
	 prefs.getBoolean(“key1”,false);
	 prefs.getString(“key2”);
Monday, July 15, 13
by Eakapong Kattiya
SharedPreferences : SecondActivity.java
String[] items = {"Notification", "Music", "Location"};
boolean[] itemsChecked = new boolean[items.length];
public void loadFromPreference(){
	 SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
	
for (int i = 0; i < items.length; i++) {
	 	 boolean isChecked = prefs.getBoolean(items[i],false);
	 	 itemsChecked[i] = isChecked ;
	 }
}
Monday, July 15, 13
@Override
	 public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
	 	 // TODO Auto-generated method stub
	 	 Item item = (Item) arg0.getItemAtPosition(arg2);
	 	 Log.i("Click listView", item.title);
	 	 if(arg2 == 0){
	 	 	 showPopupMenu();
	 	 }else if(arg2 == 1){
	 	 	 showPopupMenuWithIcon();
	 	 }else if(arg2 == 2){
	 	 	 showAlert();
	 	 }else if(arg2 == 3){
	 	 	 showAlertWithTitleBar();
	 	 }else if(arg2 == 4){
	 	 	 showPromptUserInputDialog();
	 	 }else if(arg2 == 5){
	 	 	 showSingleChoiceDialog();
	 	 }else if(arg2 == 6){
	 	 	 showMultiChoiceDialog();
	 	 }else if(arg2 == 7){
	 	 	 showMultiChoiceDialogWithPref();
	 	 }
	 }
by Eakapong Kattiya
AlertDialog with Preferences : SecondActivity.java
Monday, July 15, 13
public void showMultiChoiceDialogWithPref() {
loadFromPreference();
	 AlertDialog.Builder builder = new AlertDialog.Builder(this);
	 builder.setIcon(R.drawable.ic_layer);
	 builder.setTitle("Setting");
	 builder.setPositiveButton("OK", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
	 	 SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
	 	 SharedPreferences.Editor prefEditor = prefs.edit();
	 	 for (int i = 0; i < items.length; i++) {
	 	 	 String message = items[i] + " checked!";
	 	 	 Toast.makeText(getBaseContext(), message, Toast.LENGTH_LONG).show();
	 	 	 prefEditor.putBoolean(items[i], itemsChecked[i]);
	 	 }
	 	 prefEditor.commit();
	 }
	 });
	 builder.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
@Override
	 public void onClick(DialogInterface dialog, int which) {
	 }
	 });
	 builder.setMultiChoiceItems(items, itemsChecked, new DialogInterface.OnMultiChoiceClickListener() {
@Override
	 	 public void onClick(DialogInterface dialog, int which, boolean isChecked) {
	 	 	 itemsChecked[which] = isChecked ;
	 	 }
	 });
	 builder.create().show();
}
by Eakapong Kattiya
AlertDialog with Preferences : SecondActivity.java
Monday, July 15, 13
by Eakapong Kattiya
Popups (>API 11)
Monday, July 15, 13
by Eakapong Kattiya
Spinners
Spinners in forms
Spinners in action bars
(>API 11)
Monday, July 15, 13
public void showPopupMenuWithIcon(){
	 final String [] items = new String[] {"From Gallery", "From Camera"};
	 final Integer[] icons = new Integer[] {android.R.drawable.ic_menu_gallery,
android.R.drawable.ic_menu_camera};
	
ListAdapter adapter = new ArrayAdapterWithIcon(this, items, icons);
	 ContextThemeWrapper wrapper = new ContextThemeWrapper(this,
android.R.style.Theme_Holo_Light_Dialog);
	
AlertDialog.Builder builder = new AlertDialog.Builder(wrapper);
	 builder.setIcon(android.R.drawable.ic_menu_share);
	 builder.setTitle("Share Photo");
	 builder.setAdapter(adapter, new DialogInterface.OnClickListener() {
	 public void onClick(DialogInterface dialog, int item) {
	 	 	 	 //...
	 	 }
	 });
	 builder.create().show();
}
by Eakapong Kattiya
AlertDialog : Popup Menu With Icon
Monday, July 15, 13
public class ArrayAdapterWithIcon extends ArrayAdapter<String> {
	 private List<Integer> images;
	 public ArrayAdapterWithIcon(Context context, List<String> items, List<Integer> images) {
	 	 super(context, android.R.layout.select_dialog_item, items);
	 	 this.images = images;
	 }
	 public ArrayAdapterWithIcon(Context context, String[] items, Integer[] images) {
	 	 super(context, android.R.layout.select_dialog_item, items);
	 	 this.images = Arrays.asList(images);
	 }
	 @Override
	 public View getView(int position, View convertView, ViewGroup parent) {
	 	 View view = super.getView(position, convertView, parent);
	 	 TextView textView = (TextView) view.findViewById(android.R.id.text1);
	 	 textView.setCompoundDrawablesWithIntrinsicBounds(images.get(position), 0, 0, 0);
	 	 textView.setCompoundDrawablePadding(
	 	 	 	 (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 12,
getContext().getResources().getDisplayMetrics()));
	 	 return view;
	 }
}
by Eakapong Kattiya
ArrayAdapterWithIcon.java
Monday, July 15, 13
by Eakapong Kattiya
Gestures
Touch Long press Swipe
Drag Double touch Pinch open Pinch close
Monday, July 15, 13
class MyGestureListener extends GestureDetector.SimpleOnGestureListener{
	 @Override
	 public boolean onSingleTapUp(MotionEvent ev) {
	 	 Log.d("onSingleTapUp",ev.toString());
	 	 return true;
	 }
	 public boolean onDoubleTap(MotionEvent ev) {
	 	 Log.d("onDoubleTap",ev.toString());
	 	 return true;
	 }
	 @Override
	 public void onShowPress(MotionEvent ev) {
	 	 Log.d("onShowPress",ev.toString());
	 }
	 @Override
	 public void onLongPress(MotionEvent ev) {
	 	 Log.d("onLongPress",ev.toString());
	 }
	 @Override
	 public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) {
	 	 Log.d("onScroll",e1.toString());
	 	 return true;
	 }
	 @Override
	 public boolean onDown(MotionEvent ev) {
	 	 Log.d("onDownd",ev.toString());
	 	 return true;
	 }
	 @Override
	 public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {
	 	 Log.d("d",e1.toString());
	 	 Log.d("e2",e2.toString());
	 	 return true;
	 }
}
by Eakapong Kattiya
Gestures : create MyGestureListener.java
Monday, July 15, 13
public class MainActivity extends TabActivity {
	 GestureDetector mGestureDetector ;
	 @Override
	 protected void onCreate(Bundle savedInstanceState) {
	 	 super.onCreate(savedInstanceState);
	 	 setContentView(R.layout.activity_main);
//..
	 	
	 	 mGestureDetector = new GestureDetector(this, new MyGestureListener());
	 }
	 @Override
	 public boolean onTouchEvent(MotionEvent event) {
	 if (mGestureDetector.onTouchEvent(event))
	 return true;
	 else
	 return false;
	 }
by Eakapong Kattiya
Gestures : MainActivity.java
Monday, July 15, 13
public class MyShakeListener implements SensorEventListener {
	 private String TAG = MyShakeListener.class.getSimpleName();
	 private static final int FORCE_THRESHOLD = 800;
	 private static final int TIME_THRESHOLD = 100;
	 private static final int SHAKE_TIMEOUT = 500;
	 private static final int SHAKE_DURATION = 1000;
	 private static final int SHAKE_COUNT = 5;
	 private SensorManager mSensorMgr;
	 private float mLastX = -1.0f, mLastY = -1.0f, mLastZ = -1.0f;
	 private long mLastTime;
	 private OnShakeListener mShakeListener;
	 private Context mContext;
	 private int mShakeCount = 0;
	 private long mLastShake;
	 private long mLastForce;
	 public interface OnShakeListener {
	 	 public void onShake();
	 }
	 public MyShakeListener(Context context) {
	 	 Log.d(TAG,"ShakeListener invoked---->");
	 	 mContext = context;
	 	 resume();
	 }
	 public void setOnShakeListener(OnShakeListener listener) {
	 	 Log.d(TAG,"ShakeListener setOnShakeListener invoked---->");
	 	 mShakeListener = listener;
	 }
by Eakapong Kattiya
Shake : MyShakeListener.java (1)
Monday, July 15, 13
public void resume() {
	 	 mSensorMgr = (SensorManager) mContext
	 	 	 	 .getSystemService(Context.SENSOR_SERVICE);
	 	 if (mSensorMgr == null) {
	 	 	 throw new UnsupportedOperationException("Sensors not supported");
	 	 }
	 	 boolean supported = false;
	 	 try {
	 	 	 supported = mSensorMgr.registerListener(this,
	 	 	 	 	 mSensorMgr.getDefaultSensor(Sensor.TYPE_ACCELEROMETER),
	 	 	 	 	 SensorManager.SENSOR_DELAY_GAME);
	 	 } catch (Exception e) {
	 	 	 Toast.makeText(mContext, "Shaking not supported", Toast.LENGTH_LONG)
	 	 	 .show();
	 	 }
	 	 if ((!supported) && (mSensorMgr != null))
	 	 	 mSensorMgr.unregisterListener(this);
	 }
	 public void pause() {
	 	 if (mSensorMgr != null) {
	 	 	 mSensorMgr.unregisterListener(this);
	 	 	 mSensorMgr = null;
	 	 }
	 }
by Eakapong Kattiya
Shake : MyShakeListener.java (2)
Monday, July 15, 13
@Override
	 public void onSensorChanged(SensorEvent event) {
	 	 if (event.sensor.getType() != Sensor.TYPE_ACCELEROMETER)
	 	 	 return;
	 	 long now = System.currentTimeMillis();
	 	 if ((now - mLastForce) > SHAKE_TIMEOUT) {
	 	 	 mShakeCount = 0;
	 	 }
	 	 if ((now - mLastTime) > TIME_THRESHOLD) {
	 	 	 long diff = now - mLastTime;
	 	 	 float speed = Math.abs(event.values[SensorManager.DATA_X]
	 	 	 	 	 + event.values[SensorManager.DATA_Y]
	 	 	 	 	 	 	 + event.values[SensorManager.DATA_Z] - mLastX - mLastY
	 	 	 	 	 	 	 - mLastZ)
	 	 	 	 	 	 	 / diff * 10000;
	 	 	 if (speed > FORCE_THRESHOLD) {
	 	 	 	 if ((++mShakeCount >= SHAKE_COUNT)
	 	 	 	 	 	 && (now - mLastShake > SHAKE_DURATION)) {
	 	 	 	 	 mLastShake = now;
	 	 	 	 	 mShakeCount = 0;
	 	 	 	 	 Log.d(TAG,"ShakeListener mShakeListener---->"+mShakeListener);
	 	 	 	 	 if (mShakeListener != null) {
	 	 	 	 	 	 mShakeListener.onShake();
	 	 	 	 	 }
	 	 	 	 }
	 	 	 	 mLastForce = now;
	 	 	 }
	 	 	 mLastTime = now;
	 	 	 mLastX = event.values[SensorManager.DATA_X];
	 	 	 mLastY = event.values[SensorManager.DATA_Y];
	 	 	 mLastZ = event.values[SensorManager.DATA_Z];
	 	 }
	 }
by Eakapong Kattiya
Shake : MyShakeListener.java (3)
Monday, July 15, 13
public void addShakeListener(){
	 	 MyShakeListener mShaker = new MyShakeListener(this);
	 	 mShaker.setOnShakeListener(new MyShakeListener.OnShakeListener () {
	 	 	 public void onShake()
	 	 	 {
	 	 	 	 Toast.makeText(getApplicationContext(),
	 	 	 	 	 	 "You have shaken your phone", Toast.LENGTH_SHORT).show();
	 	 	 	 MediaPlayer mediaPlayer ;
	 	 	 	 mediaPlayer = MediaPlayer.create(getApplicationContext(), R.raw.background);
	 	 	 	 mediaPlayer.start();
	 	 	 }
	 	 });
	 }
by Eakapong Kattiya
Gestures : MainActivity.java
Monday, July 15, 13
Multimedia
by Eakapong Kattiya
Monday, July 15, 13
by Eakapong Kattiya
Camera & Gallery
//Take a photo with camera
Intent intentCamera = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(Intent.createChooser(intentCamera, "Take a with:"),MY_CAMERA_REQUEST);
	
//Choose photo from gallery
Intent intentGallery = new Intent(android.content.Intent.ACTION_GET_CONTENT);
intent.setType("image/*");
startActivityForResult(intentGallery,MY_CAMERA_REQUEST);
//Get Taken Photo from camera & gallery
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
	 if (requestCode == MY_CAMERA_REQUEST && resultCode == RESULT_OK) {
	 	 Bitmap photo = (Bitmap) data.getExtras().get("data");
	 	 	
	 	 ImageView imageView = (ImageView)findViewById(R.id.imageView1);
	 	 imageView.setImageBitmap(photo);
	 }
}
Monday, July 15, 13
by Eakapong Kattiya
MediaPlayer : Play Raw Music File (background.mp3)
//Start Music
MediaPlayer mediaPlayer = MediaPlayer.create(this, R.raw.background);
mediaPlayer.start();
//Set Volume
AudioManager mAudioManager = (AudioManager)this.getSystemService(Context.AUDIO_SERVICE);
int current_volume =mAudioManager.getStreamVolume(AudioManager.STREAM_MUSIC);
mediaPlayer.setVolume(current_volume, current_volume);
//Set Completion Listener
mediaPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mp) {
	 }
});
Monday, July 15, 13
by Eakapong Kattiya
VideoView : Offline & Streaming : activity_about.xml
<VideoView
android:id="@+id/videoView1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true" />
Monday, July 15, 13
by Eakapong Kattiya
VideoView : Offline & Streaming :VideoViewActivity.java
String streamingURL = "http://58.64.30.205/PaidContent/
ZGEwZDZiZWRmZDdjZTM2M2M0ZTA3ZjU1OWI4ZWY4M2YKLIVE2.m3u8" ;
String streamingTest = "http://devimages.apple.com/iphone/
samples/bipbop/gear1/prog_index.m3u8";
String offlineURL = "android.resource://" + getPackageName() + "/" +
R.raw.swipe_tabs ;
VideoView videoView = (VideoView)findViewById(R.id.videoView1);
	 videoView.setVideoURI(Uri.parse(streamingURL));
	 videoView.setMediaController(new MediaController(this));	
	 videoView.requestFocus();
	 videoView.setKeepScreenOn(true);
	 videoView.start();
VideoPlayer is a wrapper for MediaPlayer
VideoPlayer is easier than MediaPlayer
Monday, July 15, 13
by Eakapong Kattiya
Seek Bars
Monday, July 15, 13

More Related Content

What's hot (20)

PPTX
Embracing YUI3 and Frontend Perf
Morgan Cheng
 
PDF
Introduction toandroid
Google Developer Group Bucharest
 
PDF
Material Design and Backwards Compatibility
Angelo Rüggeberg
 
PDF
Android - Working with Fragments
Can Elmas
 
TXT
New text document
mirzaaabdulmanan
 
PDF
droidparts
Droidcon Berlin
 
PPTX
Architecting Single Activity Applications (With or Without Fragments)
Gabor Varadi
 
PDF
Simplified Android Development with Simple-Stack
Gabor Varadi
 
PPTX
Advancing the UI — Part 1: Look, Motion, and Gestures
Samsung Developers
 
PDF
Navigation Architecture Component
Yasutaka Kawamoto
 
PDF
Action bar
Mu Chun Wang
 
PDF
Architectures in the compose world
Fabio Collini
 
ODP
Android App Development - 05 Action bar
Diego Grancini
 
PDF
Testing Android apps based on Dagger and RxJava
Fabio Collini
 
PDF
Saindo da zona de conforto… resolvi aprender android
Daniel Baccin
 
PDF
Managing Activity Backstack
rajdeep
 
PPTX
Android Navigation Component
Łukasz Ciupa
 
PDF
Managing parallelism using coroutines
Fabio Collini
 
PPTX
Handling action bar in Android
indiangarg
 
PDF
Quick Intro to Android Development
Jussi Pohjolainen
 
Embracing YUI3 and Frontend Perf
Morgan Cheng
 
Introduction toandroid
Google Developer Group Bucharest
 
Material Design and Backwards Compatibility
Angelo Rüggeberg
 
Android - Working with Fragments
Can Elmas
 
New text document
mirzaaabdulmanan
 
droidparts
Droidcon Berlin
 
Architecting Single Activity Applications (With or Without Fragments)
Gabor Varadi
 
Simplified Android Development with Simple-Stack
Gabor Varadi
 
Advancing the UI — Part 1: Look, Motion, and Gestures
Samsung Developers
 
Navigation Architecture Component
Yasutaka Kawamoto
 
Action bar
Mu Chun Wang
 
Architectures in the compose world
Fabio Collini
 
Android App Development - 05 Action bar
Diego Grancini
 
Testing Android apps based on Dagger and RxJava
Fabio Collini
 
Saindo da zona de conforto… resolvi aprender android
Daniel Baccin
 
Managing Activity Backstack
rajdeep
 
Android Navigation Component
Łukasz Ciupa
 
Managing parallelism using coroutines
Fabio Collini
 
Handling action bar in Android
indiangarg
 
Quick Intro to Android Development
Jussi Pohjolainen
 

Viewers also liked (9)

PPTX
Android Dialogs Tutorial
Perfect APK
 
DOCX
Android-dialogs in android-chapter14
Dr. Ramkumar Lakshminarayanan
 
PDF
Alertdialog in android
Durai S
 
PPTX
Android Lab Test : Creating a dialog Yes/No (english)
Bruno Delb
 
PPTX
Day1 what is android(print)
Dongchul Shin
 
PPT
2310 b xd
Krazy Koder
 
PDF
Android ui dialog
Krazy Koder
 
PDF
Android notification
Krazy Koder
 
PDF
Goodbye progress dialog mess on Android
Tsuyoshi Yoshioka
 
Android Dialogs Tutorial
Perfect APK
 
Android-dialogs in android-chapter14
Dr. Ramkumar Lakshminarayanan
 
Alertdialog in android
Durai S
 
Android Lab Test : Creating a dialog Yes/No (english)
Bruno Delb
 
Day1 what is android(print)
Dongchul Shin
 
2310 b xd
Krazy Koder
 
Android ui dialog
Krazy Koder
 
Android notification
Krazy Koder
 
Goodbye progress dialog mess on Android
Tsuyoshi Yoshioka
 
Ad

Similar to Android basic 3 Dialogs (20)

PDF
Day 5
Vivek Bhusal
 
PDF
MVC meets Monad
Gianluca Aguzzi
 
PPTX
Androidaop 170105090257
newegg
 
PPTX
從零開始學 Android
秀吉(Hsiu-Chi) 蔡(Tsai)
 
ODP
Qt Workshop
Johan Thelin
 
PPT
Google Web Toolkit
Christos Stathis
 
KEY
Android workshop
Michael Galpin
 
PDF
안드로이드 세미나 2
Chul Ju Hong
 
PDF
Android Design Patterns
Godfrey Nolan
 
KEY
안드로이드 세미나 2
ang0123dev
 
PDF
Angular2: Quick overview with 2do app example
Alexey Frolov
 
PDF
Kotlin Generation
Minseo Chayabanjonglerd
 
PDF
20180721 code defragment
Chiwon Song
 
PDF
JavaScript Iteration Protocols - Workshop NodeConf EU 2022
Luciano Mammino
 
PDF
Practical
rajesh samata
 
PDF
JDD 2016 - Philippe Charrière - Golo, The Tiny Language That Gives Super Powers
PROIDEA
 
PDF
Construire une application JavaFX 8 avec gradle
Thierry Wasylczenko
 
DOCX
New microsoft office word document
nidhileena
 
PPT
Android Application Development Programming
Kongu Engineering College, Perundurai, Erode
 
PDF
Calculon
Matthias Käppler
 
MVC meets Monad
Gianluca Aguzzi
 
Androidaop 170105090257
newegg
 
從零開始學 Android
秀吉(Hsiu-Chi) 蔡(Tsai)
 
Qt Workshop
Johan Thelin
 
Google Web Toolkit
Christos Stathis
 
Android workshop
Michael Galpin
 
안드로이드 세미나 2
Chul Ju Hong
 
Android Design Patterns
Godfrey Nolan
 
안드로이드 세미나 2
ang0123dev
 
Angular2: Quick overview with 2do app example
Alexey Frolov
 
Kotlin Generation
Minseo Chayabanjonglerd
 
20180721 code defragment
Chiwon Song
 
JavaScript Iteration Protocols - Workshop NodeConf EU 2022
Luciano Mammino
 
Practical
rajesh samata
 
JDD 2016 - Philippe Charrière - Golo, The Tiny Language That Gives Super Powers
PROIDEA
 
Construire une application JavaFX 8 avec gradle
Thierry Wasylczenko
 
New microsoft office word document
nidhileena
 
Android Application Development Programming
Kongu Engineering College, Perundurai, Erode
 
Ad

More from Eakapong Kattiya (8)

PDF
(31 July 2013) iOS Basic Development Day 2 Human interface design
Eakapong Kattiya
 
PDF
Evrdi : Social Diary ( iOS and Android )
Eakapong Kattiya
 
PDF
Android Basic Development Day 1 Introduction & ADT
Eakapong Kattiya
 
PDF
iOS Basic Development Day 2 - Objective-C 2.0 & iOS Framework
Eakapong Kattiya
 
PDF
(1 July 2013) iOS Basic Development Day 5 - Submit to App Store
Eakapong Kattiya
 
PDF
Iphone developer advance twitter
Eakapong Kattiya
 
PDF
iOS Advance Development - Social Media
Eakapong Kattiya
 
PDF
Iphone developer advance location based
Eakapong Kattiya
 
(31 July 2013) iOS Basic Development Day 2 Human interface design
Eakapong Kattiya
 
Evrdi : Social Diary ( iOS and Android )
Eakapong Kattiya
 
Android Basic Development Day 1 Introduction & ADT
Eakapong Kattiya
 
iOS Basic Development Day 2 - Objective-C 2.0 & iOS Framework
Eakapong Kattiya
 
(1 July 2013) iOS Basic Development Day 5 - Submit to App Store
Eakapong Kattiya
 
Iphone developer advance twitter
Eakapong Kattiya
 
iOS Advance Development - Social Media
Eakapong Kattiya
 
Iphone developer advance location based
Eakapong Kattiya
 

Recently uploaded (20)

PPTX
WooCommerce Workshop: Bring Your Laptop
Laura Hartwig
 
PDF
SWEBOK Guide and Software Services Engineering Education
Hironori Washizaki
 
PDF
Impact of IEEE Computer Society in Advancing Emerging Technologies including ...
Hironori Washizaki
 
PDF
Empower Inclusion Through Accessible Java Applications
Ana-Maria Mihalceanu
 
PDF
NewMind AI - Journal 100 Insights After The 100th Issue
NewMind AI
 
PDF
July Patch Tuesday
Ivanti
 
PPTX
Building a Production-Ready Barts Health Secure Data Environment Tooling, Acc...
Barts Health
 
PPT
Interview paper part 3, It is based on Interview Prep
SoumyadeepGhosh39
 
PPTX
Webinar: Introduction to LF Energy EVerest
DanBrown980551
 
PDF
Empowering Cloud Providers with Apache CloudStack and Stackbill
ShapeBlue
 
PDF
How Startups Are Growing Faster with App Developers in Australia.pdf
India App Developer
 
PDF
Wojciech Ciemski for Top Cyber News MAGAZINE. June 2025
Dr. Ludmila Morozova-Buss
 
PDF
Human-centred design in online workplace learning and relationship to engagem...
Tracy Tang
 
PDF
Fl Studio 24.2.2 Build 4597 Crack for Windows Free Download 2025
faizk77g
 
PPTX
UiPath Academic Alliance Educator Panels: Session 2 - Business Analyst Content
DianaGray10
 
PPTX
Darren Mills The Migration Modernization Balancing Act: Navigating Risks and...
AWS Chicago
 
PDF
Chris Elwell Woburn, MA - Passionate About IT Innovation
Chris Elwell Woburn, MA
 
PPTX
MSP360 Backup Scheduling and Retention Best Practices.pptx
MSP360
 
PPTX
Building Search Using OpenSearch: Limitations and Workarounds
Sease
 
PDF
LLMs.txt: Easily Control How AI Crawls Your Site
Keploy
 
WooCommerce Workshop: Bring Your Laptop
Laura Hartwig
 
SWEBOK Guide and Software Services Engineering Education
Hironori Washizaki
 
Impact of IEEE Computer Society in Advancing Emerging Technologies including ...
Hironori Washizaki
 
Empower Inclusion Through Accessible Java Applications
Ana-Maria Mihalceanu
 
NewMind AI - Journal 100 Insights After The 100th Issue
NewMind AI
 
July Patch Tuesday
Ivanti
 
Building a Production-Ready Barts Health Secure Data Environment Tooling, Acc...
Barts Health
 
Interview paper part 3, It is based on Interview Prep
SoumyadeepGhosh39
 
Webinar: Introduction to LF Energy EVerest
DanBrown980551
 
Empowering Cloud Providers with Apache CloudStack and Stackbill
ShapeBlue
 
How Startups Are Growing Faster with App Developers in Australia.pdf
India App Developer
 
Wojciech Ciemski for Top Cyber News MAGAZINE. June 2025
Dr. Ludmila Morozova-Buss
 
Human-centred design in online workplace learning and relationship to engagem...
Tracy Tang
 
Fl Studio 24.2.2 Build 4597 Crack for Windows Free Download 2025
faizk77g
 
UiPath Academic Alliance Educator Panels: Session 2 - Business Analyst Content
DianaGray10
 
Darren Mills The Migration Modernization Balancing Act: Navigating Risks and...
AWS Chicago
 
Chris Elwell Woburn, MA - Passionate About IT Innovation
Chris Elwell Woburn, MA
 
MSP360 Backup Scheduling and Retention Best Practices.pptx
MSP360
 
Building Search Using OpenSearch: Limitations and Workarounds
Sease
 
LLMs.txt: Easily Control How AI Crawls Your Site
Keploy
 

Android basic 3 Dialogs

  • 1. Basic Programming Dialogs by Eakapong Kattiya Monday, July 15, 13
  • 2. by Eakapong Kattiya Toasts - Small popup - Automatically disappear - Timeout :TOAST_LONG / TOAST_SHORT Toast.makeText(getApplicationContext(), "Message saved as draft, Toast.LENGTH_LONG).show(); Monday, July 15, 13
  • 3. by Eakapong Kattiya Alerts Alerts without title bar Alerts with title bar Monday, July 15, 13
  • 4. by Eakapong Kattiya Basic Buttons Buttons Borderless Buttons Buttons Monday, July 15, 13
  • 5. public void showAlert(){ ContextThemeWrapper wrapper = new ContextThemeWrapper(this, android.R.style.Theme_Holo); AlertDialog.Builder builder = new AlertDialog.Builder(wrapper); builder.setMessage("Unfortunately,the process com.android.phone has stopped"); builder.setPositiveButton("OK",null); builder.setNegativeButton("Report", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { //show Report Activity } }); builder.create().show(); } by Eakapong Kattiya AlertDialog :Alerts without title bar Monday, July 15, 13
  • 6. public void showAlertWithTitleBar(){ ContextThemeWrapper wrapper = new ContextThemeWrapper(this, android.R.style.Theme_Holo); AlertDialog.Builder builder = new AlertDialog.Builder(wrapper); builder.setIcon(android.R.drawable.ic_dialog_alert); builder.setTitle("Erase USB Storage ?"); builder.setMessage("You’ll lose all photos and media!"); builder.setPositiveButton("Erase", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { //do Report Activity } }); builder.setNegativeButton("Cancel", null); builder.create().show(); } by Eakapong Kattiya AlertDialog :Alerts with title bar Monday, July 15, 13
  • 7. by Eakapong Kattiya Dialogs 1. Optional Title 2. Content area 3.Action button Monday, July 15, 13
  • 8. by Eakapong Kattiya Text Fields : EditText Single line & Multi line Text field types Text selection Monday, July 15, 13
  • 9. AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setIcon(R.drawable.ic_layer); builder.setTitle("Prompt user input"); builder.setMessage("Please type a message."); // Set an EditText view to get user input final EditText input = new EditText(this); builder.setView(input); builder.setPositiveButton("OK", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { Log.i("AlertDialog","input text =" + input.getText().toString()); } }); builder.setNegativeButton("Cancel", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { } }); builder.create().show(); } by Eakapong Kattiya AlertDialog : Prompt user input Monday, July 15, 13
  • 10. by Eakapong Kattiya Switches Radio Buttons On/Off Switches Checkboxes Monday, July 15, 13
  • 11. String[] items = {"Notification", "Music", "Location"}; boolean[] itemsChecked = new boolean[items.length]; AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setIcon(R.drawable.ic_layer); builder.setTitle("Multi Choice Items"); builder.setPositiveButton("OK", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { } }); builder.setNegativeButton("Cancel", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { } }); builder.setSingleChoiceItems(items,-1, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int item) { } }); builder.create().show(); } by Eakapong Kattiya AlertDialog : Single choice dialog Monday, July 15, 13
  • 12. String[] items = {"Notification", "Music", "Location"}; boolean[] itemsChecked = new boolean[items.length]; AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setIcon(R.drawable.ic_layer); builder.setTitle("Multi Choices Dialog"); builder.setPositiveButton("OK", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { } }); builder.setNegativeButton("Cancel", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { } }); builder.setMultiChoiceItems(items, itemsChecked, new DialogInterface.OnMultiChoiceClickListener() { @Override public void onClick(DialogInterface dialog, int which, boolean isChecked) { } }); builder.create().show(); } by Eakapong Kattiya AlertDialog : Multi choices dialog Monday, July 15, 13
  • 13. by Eakapong Kattiya Index Scrolling Scroll Indicator Scrolls Monday, July 15, 13
  • 14. by Eakapong Kattiya Pickers Space considerations Date & Time pickers Monday, July 15, 13
  • 15. by Eakapong Kattiya SharedPreferences : Sample //Create Preferences SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getApplicationContext()); //Create Preference Editor SharedPreferences.Editor prefEditor = prefs.edit(); prefEditor.putBoolean(“key1”, true); prefEditor.putString(“key2”, “value1”); prefEditor.putString(“key3”, “value2”); //Save Preferences with Editor prefEditor.commit(); //Load Preferences prefs.getBoolean(“key1”,false); prefs.getString(“key2”); Monday, July 15, 13
  • 16. by Eakapong Kattiya SharedPreferences : SecondActivity.java String[] items = {"Notification", "Music", "Location"}; boolean[] itemsChecked = new boolean[items.length]; public void loadFromPreference(){ SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getApplicationContext()); for (int i = 0; i < items.length; i++) { boolean isChecked = prefs.getBoolean(items[i],false); itemsChecked[i] = isChecked ; } } Monday, July 15, 13
  • 17. @Override public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) { // TODO Auto-generated method stub Item item = (Item) arg0.getItemAtPosition(arg2); Log.i("Click listView", item.title); if(arg2 == 0){ showPopupMenu(); }else if(arg2 == 1){ showPopupMenuWithIcon(); }else if(arg2 == 2){ showAlert(); }else if(arg2 == 3){ showAlertWithTitleBar(); }else if(arg2 == 4){ showPromptUserInputDialog(); }else if(arg2 == 5){ showSingleChoiceDialog(); }else if(arg2 == 6){ showMultiChoiceDialog(); }else if(arg2 == 7){ showMultiChoiceDialogWithPref(); } } by Eakapong Kattiya AlertDialog with Preferences : SecondActivity.java Monday, July 15, 13
  • 18. public void showMultiChoiceDialogWithPref() { loadFromPreference(); AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setIcon(R.drawable.ic_layer); builder.setTitle("Setting"); builder.setPositiveButton("OK", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getApplicationContext()); SharedPreferences.Editor prefEditor = prefs.edit(); for (int i = 0; i < items.length; i++) { String message = items[i] + " checked!"; Toast.makeText(getBaseContext(), message, Toast.LENGTH_LONG).show(); prefEditor.putBoolean(items[i], itemsChecked[i]); } prefEditor.commit(); } }); builder.setNegativeButton("Cancel", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { } }); builder.setMultiChoiceItems(items, itemsChecked, new DialogInterface.OnMultiChoiceClickListener() { @Override public void onClick(DialogInterface dialog, int which, boolean isChecked) { itemsChecked[which] = isChecked ; } }); builder.create().show(); } by Eakapong Kattiya AlertDialog with Preferences : SecondActivity.java Monday, July 15, 13
  • 19. by Eakapong Kattiya Popups (>API 11) Monday, July 15, 13
  • 20. by Eakapong Kattiya Spinners Spinners in forms Spinners in action bars (>API 11) Monday, July 15, 13
  • 21. public void showPopupMenuWithIcon(){ final String [] items = new String[] {"From Gallery", "From Camera"}; final Integer[] icons = new Integer[] {android.R.drawable.ic_menu_gallery, android.R.drawable.ic_menu_camera}; ListAdapter adapter = new ArrayAdapterWithIcon(this, items, icons); ContextThemeWrapper wrapper = new ContextThemeWrapper(this, android.R.style.Theme_Holo_Light_Dialog); AlertDialog.Builder builder = new AlertDialog.Builder(wrapper); builder.setIcon(android.R.drawable.ic_menu_share); builder.setTitle("Share Photo"); builder.setAdapter(adapter, new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int item) { //... } }); builder.create().show(); } by Eakapong Kattiya AlertDialog : Popup Menu With Icon Monday, July 15, 13
  • 22. public class ArrayAdapterWithIcon extends ArrayAdapter<String> { private List<Integer> images; public ArrayAdapterWithIcon(Context context, List<String> items, List<Integer> images) { super(context, android.R.layout.select_dialog_item, items); this.images = images; } public ArrayAdapterWithIcon(Context context, String[] items, Integer[] images) { super(context, android.R.layout.select_dialog_item, items); this.images = Arrays.asList(images); } @Override public View getView(int position, View convertView, ViewGroup parent) { View view = super.getView(position, convertView, parent); TextView textView = (TextView) view.findViewById(android.R.id.text1); textView.setCompoundDrawablesWithIntrinsicBounds(images.get(position), 0, 0, 0); textView.setCompoundDrawablePadding( (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 12, getContext().getResources().getDisplayMetrics())); return view; } } by Eakapong Kattiya ArrayAdapterWithIcon.java Monday, July 15, 13
  • 23. by Eakapong Kattiya Gestures Touch Long press Swipe Drag Double touch Pinch open Pinch close Monday, July 15, 13
  • 24. class MyGestureListener extends GestureDetector.SimpleOnGestureListener{ @Override public boolean onSingleTapUp(MotionEvent ev) { Log.d("onSingleTapUp",ev.toString()); return true; } public boolean onDoubleTap(MotionEvent ev) { Log.d("onDoubleTap",ev.toString()); return true; } @Override public void onShowPress(MotionEvent ev) { Log.d("onShowPress",ev.toString()); } @Override public void onLongPress(MotionEvent ev) { Log.d("onLongPress",ev.toString()); } @Override public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) { Log.d("onScroll",e1.toString()); return true; } @Override public boolean onDown(MotionEvent ev) { Log.d("onDownd",ev.toString()); return true; } @Override public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) { Log.d("d",e1.toString()); Log.d("e2",e2.toString()); return true; } } by Eakapong Kattiya Gestures : create MyGestureListener.java Monday, July 15, 13
  • 25. public class MainActivity extends TabActivity { GestureDetector mGestureDetector ; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //.. mGestureDetector = new GestureDetector(this, new MyGestureListener()); } @Override public boolean onTouchEvent(MotionEvent event) { if (mGestureDetector.onTouchEvent(event)) return true; else return false; } by Eakapong Kattiya Gestures : MainActivity.java Monday, July 15, 13
  • 26. public class MyShakeListener implements SensorEventListener { private String TAG = MyShakeListener.class.getSimpleName(); private static final int FORCE_THRESHOLD = 800; private static final int TIME_THRESHOLD = 100; private static final int SHAKE_TIMEOUT = 500; private static final int SHAKE_DURATION = 1000; private static final int SHAKE_COUNT = 5; private SensorManager mSensorMgr; private float mLastX = -1.0f, mLastY = -1.0f, mLastZ = -1.0f; private long mLastTime; private OnShakeListener mShakeListener; private Context mContext; private int mShakeCount = 0; private long mLastShake; private long mLastForce; public interface OnShakeListener { public void onShake(); } public MyShakeListener(Context context) { Log.d(TAG,"ShakeListener invoked---->"); mContext = context; resume(); } public void setOnShakeListener(OnShakeListener listener) { Log.d(TAG,"ShakeListener setOnShakeListener invoked---->"); mShakeListener = listener; } by Eakapong Kattiya Shake : MyShakeListener.java (1) Monday, July 15, 13
  • 27. public void resume() { mSensorMgr = (SensorManager) mContext .getSystemService(Context.SENSOR_SERVICE); if (mSensorMgr == null) { throw new UnsupportedOperationException("Sensors not supported"); } boolean supported = false; try { supported = mSensorMgr.registerListener(this, mSensorMgr.getDefaultSensor(Sensor.TYPE_ACCELEROMETER), SensorManager.SENSOR_DELAY_GAME); } catch (Exception e) { Toast.makeText(mContext, "Shaking not supported", Toast.LENGTH_LONG) .show(); } if ((!supported) && (mSensorMgr != null)) mSensorMgr.unregisterListener(this); } public void pause() { if (mSensorMgr != null) { mSensorMgr.unregisterListener(this); mSensorMgr = null; } } by Eakapong Kattiya Shake : MyShakeListener.java (2) Monday, July 15, 13
  • 28. @Override public void onSensorChanged(SensorEvent event) { if (event.sensor.getType() != Sensor.TYPE_ACCELEROMETER) return; long now = System.currentTimeMillis(); if ((now - mLastForce) > SHAKE_TIMEOUT) { mShakeCount = 0; } if ((now - mLastTime) > TIME_THRESHOLD) { long diff = now - mLastTime; float speed = Math.abs(event.values[SensorManager.DATA_X] + event.values[SensorManager.DATA_Y] + event.values[SensorManager.DATA_Z] - mLastX - mLastY - mLastZ) / diff * 10000; if (speed > FORCE_THRESHOLD) { if ((++mShakeCount >= SHAKE_COUNT) && (now - mLastShake > SHAKE_DURATION)) { mLastShake = now; mShakeCount = 0; Log.d(TAG,"ShakeListener mShakeListener---->"+mShakeListener); if (mShakeListener != null) { mShakeListener.onShake(); } } mLastForce = now; } mLastTime = now; mLastX = event.values[SensorManager.DATA_X]; mLastY = event.values[SensorManager.DATA_Y]; mLastZ = event.values[SensorManager.DATA_Z]; } } by Eakapong Kattiya Shake : MyShakeListener.java (3) Monday, July 15, 13
  • 29. public void addShakeListener(){ MyShakeListener mShaker = new MyShakeListener(this); mShaker.setOnShakeListener(new MyShakeListener.OnShakeListener () { public void onShake() { Toast.makeText(getApplicationContext(), "You have shaken your phone", Toast.LENGTH_SHORT).show(); MediaPlayer mediaPlayer ; mediaPlayer = MediaPlayer.create(getApplicationContext(), R.raw.background); mediaPlayer.start(); } }); } by Eakapong Kattiya Gestures : MainActivity.java Monday, July 15, 13
  • 31. by Eakapong Kattiya Camera & Gallery //Take a photo with camera Intent intentCamera = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE); startActivityForResult(Intent.createChooser(intentCamera, "Take a with:"),MY_CAMERA_REQUEST); //Choose photo from gallery Intent intentGallery = new Intent(android.content.Intent.ACTION_GET_CONTENT); intent.setType("image/*"); startActivityForResult(intentGallery,MY_CAMERA_REQUEST); //Get Taken Photo from camera & gallery protected void onActivityResult(int requestCode, int resultCode, Intent data) { if (requestCode == MY_CAMERA_REQUEST && resultCode == RESULT_OK) { Bitmap photo = (Bitmap) data.getExtras().get("data"); ImageView imageView = (ImageView)findViewById(R.id.imageView1); imageView.setImageBitmap(photo); } } Monday, July 15, 13
  • 32. by Eakapong Kattiya MediaPlayer : Play Raw Music File (background.mp3) //Start Music MediaPlayer mediaPlayer = MediaPlayer.create(this, R.raw.background); mediaPlayer.start(); //Set Volume AudioManager mAudioManager = (AudioManager)this.getSystemService(Context.AUDIO_SERVICE); int current_volume =mAudioManager.getStreamVolume(AudioManager.STREAM_MUSIC); mediaPlayer.setVolume(current_volume, current_volume); //Set Completion Listener mediaPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() { @Override public void onCompletion(MediaPlayer mp) { } }); Monday, July 15, 13
  • 33. by Eakapong Kattiya VideoView : Offline & Streaming : activity_about.xml <VideoView android:id="@+id/videoView1" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_alignParentLeft="true" android:layout_alignParentTop="true" /> Monday, July 15, 13
  • 34. by Eakapong Kattiya VideoView : Offline & Streaming :VideoViewActivity.java String streamingURL = "http://58.64.30.205/PaidContent/ ZGEwZDZiZWRmZDdjZTM2M2M0ZTA3ZjU1OWI4ZWY4M2YKLIVE2.m3u8" ; String streamingTest = "http://devimages.apple.com/iphone/ samples/bipbop/gear1/prog_index.m3u8"; String offlineURL = "android.resource://" + getPackageName() + "/" + R.raw.swipe_tabs ; VideoView videoView = (VideoView)findViewById(R.id.videoView1); videoView.setVideoURI(Uri.parse(streamingURL)); videoView.setMediaController(new MediaController(this)); videoView.requestFocus(); videoView.setKeepScreenOn(true); videoView.start(); VideoPlayer is a wrapper for MediaPlayer VideoPlayer is easier than MediaPlayer Monday, July 15, 13
  • 35. by Eakapong Kattiya Seek Bars Monday, July 15, 13