package com.healthtube;
import android.os.Bundle;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.util.Log;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.Window;
import android.view.WindowManager;
import android.widget.Button;
import java.util.ArrayList;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import com.healthtube.R;
import com.google.android.youtube.player.YouTubeBaseActivity;
import com.google.android.youtube.player.YouTubeInitializationResult;
import com.google.android.youtube.player.YouTubePlayer;
import com.google.android.youtube.player.YouTubePlayerView;
import com.google.android.youtube.player.YouTubePlayer.Provider;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.util.Log;
import android.view.View;
import android.widget.AdapterView;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.LinearLayout.LayoutParams;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.Toast;
import android.widget.ToggleButton;
public class MainActivity extends YouTubeBaseActivity implements YouTubePlayer.OnInitializedListener {
String idPlayList;
ListView videosListView;
YouTubePlayerView youtubePlayerView;
YouTubePlayer playa;
ImageView thumb;
String URL_VIDEO;
String keyaux1 = "AIzaSyBI";
String keyaux2 = "Is0u0NXhsZg";
String keyaux3 = "uv8nCNvSzU";
String keyaux4 = "mflTt7K1Ek";
String KEY_DEVELOPER = keyaux1 + keyaux2 + keyaux3 + keyaux4;
ToggleButton listExtendButton;
ToggleButton playerExtendButton;
Button changeChannelButton;
int height = 0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//Remove title bar
this.requestWindowFeature(Window.FEATURE_NO_TITLE);
//Remove notification bar
this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
//Set the layout
setContentView(R.layout.youtube);
//General Health as the default playlist and obtain all its videos
idPlayList="PLOhl4anP1Mp3FjD_g3KOEcYWGRrPZPTI0";
new Thread(new GetYouTubeUserVideosTask(responseHandler, idPlayList)).start();
youtubePlayerView = (YouTubePlayerView) findViewById(R.id.youtube_view);
youtubePlayerView.initialize(KEY_DEVELOPER, this);
playa = null;
videosListView = (ListView) findViewById(R.id.listListView);
listExtendButton = (ToggleButton) findViewById(R.id.listExtendButton);
listExtendButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
if(listExtendButton.isChecked() && playerExtendButton.isChecked()){
playerExtendButton.performClick();
}
if(listExtendButton.isChecked()){
youtubePlayerView.setVisibility(View.GONE);
LayoutParams params = (LayoutParams) videosListView.getLayoutParams();
height = params.height;
params.height = android.view.ViewGroup.LayoutParams.WRAP_CONTENT;
}
else{
youtubePlayerView.setVisibility(View.VISIBLE);
LayoutParams params = (LayoutParams) videosListView.getLayoutParams();
params.height = height;
}
}
});
playerExtendButton = (ToggleButton) findViewById(R.id.playerExtendButton);
playerExtendButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
if(listExtendButton.isChecked() && playerExtendButton.isChecked()){
listExtendButton.performClick();
}
if(playerExtendButton.isChecked()){
videosListView.setVisibility(View.GONE);
LayoutParams params = (LayoutParams) youtubePlayerView.getLayoutParams();
height = params.height;
params.height = android.view.ViewGroup.LayoutParams.FILL_PARENT;
}
else{
videosListView.setVisibility(View.VISIBLE);
LayoutParams params = (LayoutParams) youtubePlayerView.getLayoutParams();
params.height = height;
}
}
});
changeChannelButton = (Button) findViewById(R.id.changeChannelButton);
changeChannelButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
showsDialog();
}
});
}
protected void onStop() {
responseHandler = null;
super.onStop();
}
protected void onPause() {
super.onPause();
}
protected void onStart() {
super.onStart();
}
protected void onResume() {
super.onResume();
}
//Handler that is called once the playlist videos have been retrieved
Handler responseHandler = new Handler() {
public void handleMessage(Message msg) {
fillListView(msg);
};
};
/**
* Fills the listview of the layout with the videos fetched by getYoutubeFeed
* @param msg message that contains all the videos
*/
public void fillListView(Message msg){
ArrayList<Video> listVideos = (ArrayList) msg.getData().get("LISTVIDEOS");
videosListView.setAdapter(new AdapterList(this, R.layout.entry, listVideos){
@Override
public void onEntry(Object entry, View view) {
if (entry != null) {
TextView superiorText = (TextView) view.findViewById(R.id.superiorTextView);
if (superiorText != null)
superiorText.setText(((Video) entry).getTitle());
thumb = (ImageView) view.findViewById(R.id.imageView);
String aux = ((Video) entry).getThumbUrl();
ImageDownloader imageDownloader = new ImageDownloader();
imageDownloader.download(aux, thumb);
}
}
});
videosListView.setOnItemClickListener(new OnItemClickListener(){
@Override
public void onItemClick(AdapterView<?> pariente, View view,
int posicion, long id) {
Video chosen = (Video)pariente.getItemAtPosition(posicion);
String urlVideo = chosen.getUrl();
String aux = getYoutubeVideoId(urlVideo);
URL_VIDEO = aux;
playa.cueVideo(URL_VIDEO);
}
});
}
/**
* Process the URL to obtain the video ID
* @param input Video URL
* @return Video ID
*/
public static String getYoutubeVideoId(String input)
{
Pattern p = Pattern.compile("http.*\\?v=([a-zA-Z0-9_\\-]+)(?:&.)*([a-zA-Z=_]*)");
Matcher m = p.matcher(input);
if (m.matches()) {
input = m.group(1);
}
return input;
}
/**
* Shows a dialog to change the playlist
*/
void showsDialog(){
final CharSequence[] items={"General Health", "Back", "Knee", "Ankle", "Neck"};
AlertDialog.Builder builder3=new AlertDialog.Builder(this);
builder3.setTitle("Select playlist").setItems(items, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
switch(which) {
//General Health
case 0:
idPlayList = "PLOhl4anP1Mp3FjD_g3KOEcYWGRrPZPTI0";
new Thread(new GetYouTubeUserVideosTask(responseHandler, idPlayList)).start();
break;
//Back
case 1:
idPlayList = "PLOhl4anP1Mp3GR-PVzgH2bBFZbW1fX8HS";
new Thread(new GetYouTubeUserVideosTask(responseHandler, idPlayList)).start();
break;
//Knee
case 2:
idPlayList = "PLOhl4anP1Mp1vJKmmqGAcu10h5OSbx4zf";
new Thread(new GetYouTubeUserVideosTask(responseHandler, idPlayList)).start();
break;
//Ankle
case 3:
idPlayList = "PLOhl4anP1Mp3hUCb87AM_Gj87__7cJJJc";
new Thread(new GetYouTubeUserVideosTask(responseHandler, idPlayList)).start();
break;
//Neck
case 4:
idPlayList = "PLOhl4anP1Mp1N774MgOoEDWwC6HwC5pn7";
new Thread(new GetYouTubeUserVideosTask(responseHandler, idPlayList)).start();
break;
}
// TODO Auto-generated method stub
Toast.makeText(getApplicationContext(), "Selected playlist: "+items[which], Toast.LENGTH_LONG).show();
}
});
builder3.show();
}
@Override
public void onInitializationFailure(Provider arg0,
YouTubeInitializationResult arg1) {
Toast.makeText(getApplicationContext(), "Oh dear, something terrible happened, sorry!", Toast.LENGTH_SHORT).show();
}
@Override
public void onInitializationSuccess(Provider provider, YouTubePlayer player,
boolean wasRestored) {
// TODO Auto-generated method stub
playa = player;
playa.setPlayerStyle(YouTubePlayer.PlayerStyle.MINIMAL);
}
}