Android Login Example

/******************************************* 
Login.java : EZserver API Samples
Author: EZhometech
Initial Date: 02/07/2016
Modified Date: 02/07/2016
http://www.ezhometech.com
sales@ezhometech.com
Copyright: EZhometech Inc. 
********************************************/
package ezhometech.ovp;

import android.net.Uri;
import android.net.wifi.WifiManager;
import android.os.AsyncTask;
import android.os.Bundle;
import android.app.Activity;
import android.app.ProgressDialog;
import android.view.Menu;
import android.view.LayoutInflater;
import android.widget.TextView;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.lang.ref.WeakReference;
import java.net.Socket;
import java.util.ArrayList;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.ScheduledFuture;
import java.util.concurrent.TimeUnit;


import android.content.Context;
import android.content.Intent;
import android.content.res.AssetManager;
import android.content.res.Resources;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.Drawable;
import android.widget.BaseAdapter;

import android.util.Base64;
import android.util.Log;
import android.view.KeyEvent;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.AdapterView.OnItemSelectedListener;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.GridView;
import android.view.View;
import android.view.ViewGroup;

import android.widget.ImageButton;
import android.widget.Toast;

public class Login extends Activity {
private static final String TAG = "Login";

private GridView mGridview;
private ImageButton mIptv;
private EditText mChannelNoInputField;
private String g_token = null;

private String g_ezserver_ip="192.168.0.7";
private String g_management_ip="192.168.0.7";
private int g_ezserver_port = 8000;
private int g_cur_ch_no=1;
private String g_user_name = null;
private String g_password = null;
private String g_httpport=null;

private int SETTING_REQUEST=0;
private int IPTV_REQUEST=1;
private int VOD_REQUEST=2;
private boolean g_login_status=false;
private String g_message;
private int color_type;
private int ICOND_WIDTH=110;
private int ICON_HEIGHT=160;
private int MAX_GRID_ICON_NO_ON_SCREEN=16;
private int g_start_position=0;

String[] g_folder_list_in_array = new String[128];
int g_total_folder_no=0;
MovieInfo g_movie_list_in_array=new MovieInfo();
int g_total_movie_no=0;
int g_current_movie_folder_list_no=0;
CHInfo g_ch_list_in_array=new CHInfo();
int g_total_ch_no=0;
int g_current_ch_folder_list_no=0;
int bGridView_IPTV_VOD_Use=1;
int g_cur_player_movie_index=0;
int g_cur_player_ch_index=0;
String g_dmsg;
Menu g_menu;
private View g_pre_view=null;
private ScheduledExecutorService InputChannelNo_scheduleTaskExecutor;
private ScheduledFuture<?> InputChannelNo_queueFuture;
private int InputChannelNo_Delay=0;
private boolean bFirstInputChannelNo=true;


private String g_config_filename = "config.xml";
ProgressDialog dialog;

@Override
protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.login);

if (Get_Config() == false) return;

g_token=null;
new Login_Register_EZserver().execute(g_ezserver_ip,Integer.toString(g_ezserver_port),g_user_name,g_password);


mGridview = (GridView) findViewById(R.id.gridview); 
mChannelNoInputField=(EditText)findViewById(R.id.channel_no_input_field);
mChannelNoInputField.setVisibility(View.GONE);
mGridview.setOnItemClickListener(new AdapterView.OnItemClickListener(){
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
if (bGridView_IPTV_VOD_Use==1)
{
g_cur_ch_no=position+1;
g_cur_player_ch_index=position;
StartIPTV();
}else if (bGridView_IPTV_VOD_Use==2)
{
g_cur_player_movie_index=position;
StartVOD();
}
}
}); 
}
protected void onDestroy() {
if (g_token!=null)
{
g_token=User_Logout(g_token,g_ezserver_ip,g_ezserver_port,g_user_name,g_password);
g_token=null;
}
super.onDestroy();
}

private String decodeUnicode(String theString) {
char aChar;
int len = theString.length();
StringBuffer outBuffer = new StringBuffer(len);
for (int x = 0; x < len;) {
aChar = theString.charAt(x++);
if (aChar == '\\') {
aChar = theString.charAt(x++);
if (aChar == 'u') {
// Read the xxxx
int value = 0;
for (int i = 0; i < 4; i++) {
aChar = theString.charAt(x++);
switch (aChar) {
case '0':
case '1':
case '2':
case '3':
case '4':
case '5':
case '6':
case '7':
case '8':
case '9':
value = (value << 4) + aChar - '0';
break;
case 'a':
case 'b':
case 'c':
case 'd':
case 'e':
case 'f':
value = (value << 4) + 10 + aChar - 'a';
break;
case 'A':
case 'B':
case 'C':
case 'D':
case 'E':
case 'F':
value = (value << 4) + 10 + aChar - 'A';
break;
default:
throw new IllegalArgumentException(
"Malformed \\uxxxx encoding.");
}

}
outBuffer.append((char) value);
} else {
if (aChar == 't')
aChar = '\t';
else if (aChar == 'r')
aChar = '\r';
else if (aChar == 'n')
aChar = '\n';
else if (aChar == 'f')
aChar = '\f';
outBuffer.append(aChar);
}
} else
outBuffer.append(aChar);
}
return outBuffer.toString();
}
public class MovieInfo {
private int MAX_MOVIE_NO=300;
private int TotalMovieNo=0;
public String MovieFileName[]=new String[MAX_MOVIE_NO];
public String MoviePictureFileName[]=new String[MAX_MOVIE_NO];
public double Duration[]=new double[MAX_MOVIE_NO];
public double Bitrate[]=new double[MAX_MOVIE_NO];
public int PreviewDuration[]=new int[MAX_MOVIE_NO];
public double MovieFileSize[]=new double[MAX_MOVIE_NO];
public int QualityType[]=new int [MAX_MOVIE_NO];
public int MovieFee[]=new int [MAX_MOVIE_NO];

// Add functions 
public boolean AddMovieFileName(int index, String moviename)
{
MovieFileName[index]=moviename;
TotalMovieNo++;
return true;

public boolean AddMoviePictureFileName(int index, String icon_path)
{
MoviePictureFileName[index]=icon_path;
TotalMovieNo++;
return true;

public boolean AddMovieFileSize(int index, double filesize)
{
MovieFileSize[index]=filesize;
return true;
}
public boolean AddMovieDRM_Info(int index, double duration, double bitrate)
{
Duration[index]=duration;
Bitrate[index]=bitrate;
return true;

// Get Movie Functions 
public int GetMovieTotalNo()
{
return TotalMovieNo;
}
// Get Movie DRM Functions
public String GetMovieFileName(int index)
{

return MovieFileName[index];
}
public String GetMoviePictureFileName(int index)
{

return MoviePictureFileName[index];
}
public double GetMovieFileSize(int index)
{

return MovieFileSize[index];
}
public double GetMovieDRM_Duration(int index)

return Duration[index];
}
public double GetMovieDRM_Bitrate(int index)

return Bitrate[index];

public String GetMovieDRM_MovieTitle(int index)

return MovieFileName[index];

public double GetMovieDRM_PreviewDuration(int index)

return PreviewDuration[index];

public int GetMovieDRM_QualityType(int index)

return QualityType[index];

public double GetMovieDRM_MovieFee(int index)

return MovieFee[index];

}
public class CHInfo {
private int MAX_CH_NO=500;
private int TotalCHNo=0;
public String CHFileName[]=new String[MAX_CH_NO];
public String CHPictureFileName[]=new String[MAX_CH_NO];

// Add functions 
public boolean AddCHFileName(int index, String chname)
{
CHFileName[index]=chname;
TotalCHNo++;
return true;

public boolean AddCHPictureFileName(int index, String icon_path)
{
CHPictureFileName[index]=icon_path;
TotalCHNo++;
return true;


// Get Movie Functions 
public int GetCHTotalNo()
{
return TotalCHNo;
}
public String GetCHFileName(int index)
{

return CHFileName[index];
}
public String GetCHPictureFileName(int index)
{

return CHPictureFileName[index];

}

public class ImageAdapter extends BaseAdapter { 
private Context mContext; 
private int ch_no=1;
String channel_icon_url[]= new String[1000];
//ImageView imageView_array[]=new ImageView[1000];
View grid_array[]=new View[1000];

// Keep all Images in array 
public Integer[] mThumbIds = { 
}; 

// Constructor 
public ImageAdapter(Context c){ 
mContext = c; 
g_total_ch_no=Get_All_Channel_List(g_token,g_ezserver_ip,g_ezserver_port);

g_message=g_total_ch_no+" Channels are online.";
Toast.makeText(Login.this, g_message, Toast.LENGTH_LONG).show();


@Override
public int getCount() { 
bGridView_IPTV_VOD_Use=1;

return g_total_ch_no;


@Override
public Object getItem(int position) { 
return null;


@Override
public long getItemId(int position) { 
return 0; 

@Override
public View getView(int position, View convertView, ViewGroup parent) { 
// ImageView imageView = new ImageView(mContext); 
View grid=null;
String ch_name_wo_extent_name;

if (grid_array[position]==null)

LayoutInflater inflater = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
grid = inflater.inflate(R.layout.grid_single, null);
TextView textView = (TextView) grid.findViewById(R.id.grid_text);
ImageView imageView = (ImageView)grid.findViewById(R.id.grid_image);
ch_no=position;
String UnicodeString;
String CHFileName;
String CHUicodeName;

CHFileName=g_ch_list_in_array.GetCHFileName(ch_no);
UnicodeString=CHFileName.replaceAll("%u", "\\\\u");
CHUicodeName=decodeUnicode(UnicodeString);
textView.setText(CHUicodeName);
String CHPictureFileName=g_ch_list_in_array.GetCHPictureFileName(ch_no);
ch_name_wo_extent_name=CHPictureFileName.substring (7);
channel_icon_url[position]="http://"+g_ezserver_ip+":"+g_ezserver_port+"/"+ch_name_wo_extent_name;

new DownloadImageTask(imageView).execute(channel_icon_url[position]);
grid_array[position]=grid;
}else
{
grid=grid_array[position];
}


return grid; 

}


public class DownloadImageTask extends AsyncTask<String, Void, Bitmap> {
private ImageView imageView;
private Bitmap image;

public DownloadImageTask(ImageView imageView) {
this.imageView = (ImageView) imageView;
}

protected Bitmap doInBackground(String... urls) {
String urldisplay = urls[0];
try {
InputStream in = new java.net.URL(urldisplay).openStream();
image = BitmapFactory.decodeStream(in);
} catch (Exception e) {
image = null;
}
return image;
}

//@SuppressLint("NewApi")
protected void onPostExecute(Bitmap result) {
if (result != null) {
imageView.setImageBitmap(result);
}
}
}


private class BitmapWorkerTask extends AsyncTask<String,Void,Drawable> {

private WeakReference<ImageView> imageViewReference= null;

public BitmapWorkerTask(ImageView imageView) throws IOException {
imageViewReference = new WeakReference<ImageView>(imageView); 
}

// background.
@Override
protected Drawable doInBackground(String... params) {

try{ 

java.net.URL src_url = new java.net.URL(params[0]);
try{ 

Drawable drawable=android.graphics.drawable.Drawable.createFromStream(src_url.openStream(),"test"); 
return drawable;
}catch(IOException ioe )
{
return null;
}
}catch(IOException ioe ){ 
return null;
}


}

// Once complete, see if ImageView is still around and set bitmap.
@Override
protected void onPostExecute(Drawable drawable) {
if (imageViewReference != null && drawable != null) {
final ImageView imageView = imageViewReference.get();
if (imageView != null) {
imageView.setImageDrawable(drawable);
imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
}
}
}
}

public class CH_ImageAdapter extends BaseAdapter { 
private Context mContext; 
private int ch_no=1;
String channel_icon_url[]= new String[1000];
View grid_array[]=new View[1000];
// Keep all Images in array 
public Integer[] mThumbIds = { 
}; 

// Constructor 
public CH_ImageAdapter(Context c){ 
mContext = c; 
g_total_ch_no=Get_Channel_List(g_token,g_ezserver_ip,g_ezserver_port,g_folder_list_in_array[g_current_ch_folder_list_no]);
g_message=g_total_ch_no+" Channels are online.";
Toast.makeText(Login.this, g_message, Toast.LENGTH_LONG).show();


@Override
public int getCount() { 
bGridView_IPTV_VOD_Use=1;

return g_total_ch_no;


@Override
public Object getItem(int position) { 
return null;


@Override
public long getItemId(int position) { 
return 0; 


@Override
public View getView(int position, View convertView, ViewGroup parent) { 
View grid=null;
String ch_name_wo_extent_name;

if (g_total_ch_no>0)
{
if (channel_icon_url[position]==null)

if (grid_array[position]==null)
{
LayoutInflater inflater = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
grid = new View(mContext);
grid = inflater.inflate(R.layout.grid_single, null);
}
TextView textView = (TextView) grid.findViewById(R.id.grid_text);
ImageView imageView = (ImageView)grid.findViewById(R.id.grid_image);
ch_no=position;

String UnicodeString;
String CHFileName;
String CHUicodeName;

CHFileName=g_ch_list_in_array.GetCHFileName(ch_no);
UnicodeString=CHFileName.replaceAll("%u", "\\\\u");
CHUicodeName=decodeUnicode(UnicodeString);
textView.setText(CHUicodeName);

String CHPictureFileName=g_ch_list_in_array.GetCHPictureFileName(ch_no);
ch_name_wo_extent_name=CHPictureFileName.substring (7);
channel_icon_url[position]="http://"+g_ezserver_ip+":"+g_ezserver_port+"/"+ch_name_wo_extent_name;

new DownloadImageTask(imageView).execute(channel_icon_url[position]);

grid_array[position]=grid;
}else
{
grid=grid_array[position];
}

}
// parent.getChildAt(1).setBackgroundColor(color_type);
return grid; 

}

private class Login_Register_EZserver extends AsyncTask<String, String, String> {
private String token=null;
private boolean bhttpport;
protected String doInBackground(String... urls) {


token=User_Login(urls[0],Integer.valueOf(urls[1]),urls[2],urls[3]);
if (token==null){
return null;
}
bhttpport=Get_HTTP_Port(token,urls[0],Integer.valueOf(urls[1]));
if (bhttpport==false)
token=null;


return token;
}

protected void onPostExecute(String result) {
g_token=result;
if (g_token==null){
g_login_status=false;
g_message="Faild to Connect Ezserver("+g_ezserver_ip+":"+g_ezserver_port+")";
StartSetting(null);
}else
{
g_login_status=true;
MenuItem mnuName;
g_total_folder_no=Get_Channel_Category(g_token,g_ezserver_ip,g_ezserver_port);
g_menu.clear();

mnuName=g_menu.add(0,0,0, "All CH");
mnuName.setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM | MenuItem.SHOW_AS_ACTION_WITH_TEXT);
for (int i=0;i<g_total_folder_no;i++)
{
mnuName=g_menu.add(0,i+1, i+1, g_folder_list_in_array[i]);
mnuName.setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM | MenuItem.SHOW_AS_ACTION_WITH_TEXT); 
}

mnuName=g_menu.add(0,g_total_folder_no+1, g_total_folder_no+1, "Movie");
mnuName.setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM | MenuItem.SHOW_AS_ACTION_WITH_TEXT);
mnuName=g_menu.add(0,g_total_folder_no+2, g_total_folder_no+2, "Setting");
mnuName.setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM | MenuItem.SHOW_AS_ACTION_WITH_TEXT);

mGridview.setAdapter(new ImageAdapter(Login.this)); 

//g_register_flag=Check_Player_license(g_token,g_ezserver_ip,g_ezserver_port);
}
}

}

private boolean Get_Access_Config(){
int keyword_pos=0;
int crln_pos=0;
try {

AssetManager am = this.getAssets();

InputStream is = am.open("config.xml");
InputStreamReader inputStreamReader = new InputStreamReader(is);
BufferedReader f = new BufferedReader(inputStreamReader);
char config_info[] = new char[512];
String config_buffer;
f.read(config_info);
f.close();

config_buffer = new String(config_info);
keyword_pos=config_buffer.indexOf("<user>");
if (keyword_pos!=-1)
{
crln_pos=config_buffer.indexOf("</user>",keyword_pos);
g_user_name= config_buffer.substring (keyword_pos+6,crln_pos); 


keyword_pos=config_buffer.indexOf("<password>");
if (keyword_pos!=-1)
{
crln_pos=config_buffer.indexOf("</password>",keyword_pos);
g_password= config_buffer.substring (keyword_pos+10,crln_pos); 

keyword_pos=config_buffer.indexOf("<httpport>");
if (keyword_pos!=-1)
{
crln_pos=config_buffer.indexOf("</httpport>",keyword_pos);
g_ezserver_port= Integer.valueOf(config_buffer.substring (keyword_pos+10,crln_pos)); 

keyword_pos=config_buffer.indexOf("<cur_chno>");
if (keyword_pos!=-1)
{
crln_pos=config_buffer.indexOf("</cur_chno>",keyword_pos);
g_cur_ch_no= Integer.valueOf(config_buffer.substring (keyword_pos+10,crln_pos)); 


keyword_pos=config_buffer.indexOf("<ezserver_ip>");
if (keyword_pos!=-1)
{
crln_pos=config_buffer.indexOf("</ezserver_ip>",keyword_pos);
g_ezserver_ip= config_buffer.substring (keyword_pos+13,crln_pos); 

keyword_pos=config_buffer.indexOf("<management_ip>");
if (keyword_pos!=-1)
{
crln_pos=config_buffer.indexOf("</management_ip>",keyword_pos);
g_management_ip= config_buffer.substring (keyword_pos+15,crln_pos); 


return true;

} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return false;

}
private boolean Get_Config(){
int keyword_pos=0;
int crln_pos=0;
byte[] config_info = new byte[512];
String config_buffer;
try {

File file =getFileStreamPath(g_config_filename);
if(!file.exists()) 
{

Get_Access_Config();
return true;
}

FileInputStream fos = openFileInput(g_config_filename);
fos.read(config_info);
fos.close();


config_buffer = new String(config_info);
keyword_pos=config_buffer.indexOf("<user>");
if (keyword_pos!=-1)
{
crln_pos=config_buffer.indexOf("</user>",keyword_pos);
g_user_name= config_buffer.substring (keyword_pos+6,crln_pos); 


// mPath.setText(g_user_name);
keyword_pos=config_buffer.indexOf("<password>");
if (keyword_pos!=-1)
{
crln_pos=config_buffer.indexOf("</password>",keyword_pos);
g_password= config_buffer.substring (keyword_pos+10,crln_pos); 

keyword_pos=config_buffer.indexOf("<httpport>");
if (keyword_pos!=-1)
{
crln_pos=config_buffer.indexOf("</httpport>",keyword_pos);
g_ezserver_port= Integer.valueOf(config_buffer.substring (keyword_pos+10,crln_pos)); 

keyword_pos=config_buffer.indexOf("<cur_chno>");
if (keyword_pos!=-1)
{
crln_pos=config_buffer.indexOf("</cur_chno>",keyword_pos);
g_cur_ch_no= Integer.valueOf(config_buffer.substring (keyword_pos+10,crln_pos)); 


keyword_pos=config_buffer.indexOf("<ezserver_ip>");
if (keyword_pos!=-1)
{
crln_pos=config_buffer.indexOf("</ezserver_ip>",keyword_pos);
g_ezserver_ip= config_buffer.substring (keyword_pos+13,crln_pos); 

keyword_pos=config_buffer.indexOf("<management_ip>");
if (keyword_pos!=-1)
{
crln_pos=config_buffer.indexOf("</management_ip>",keyword_pos);
g_management_ip= config_buffer.substring (keyword_pos+15,crln_pos); 


return true;

} catch (IOException e) {

e.printStackTrace();
return false;

}

private boolean Update_Config(){
try {

String buffer;


buffer="<?xml version='1.0' encoding='iso-8859-1\'' ?>\r\n"+
"<user>"+ g_user_name+ "</user>\r\n"+
"<password>"+g_password+"</password>\r\n"+
"<httpport>"+g_ezserver_port+"</httpport>\r\n"+
"<cur_chno>"+g_cur_ch_no+"</cur_chno>\r\n"+
"<ezserver_ip>"+g_ezserver_ip+"</ezserver_ip>\r\n"+
"<management_ip>"+g_ezserver_ip+"</management_ip>\r\n";


FileOutputStream fos = openFileOutput(g_config_filename, 0);
fos.write(buffer.getBytes());
fos.flush();
fos.close();

new Login_Register_EZserver().execute(g_ezserver_ip,Integer.toString(g_ezserver_port),g_user_name,g_password);

return true;


} catch (IOException e) {
// TODO Auto-generated catch block
Toast.makeText(Login.this, "Failed to write",
Toast.LENGTH_LONG).show();
e.printStackTrace();
return false;

}

private String User_Login(String ezserver_ip, int ezserver_port, String username, String password){

String sendbuffer = null;
String revbuffer = null;
String token= null;
String maciddot= null;
String macid= null;
int keyword_pos=0;
int crln_pos=0;
byte inbuffer[] = new byte[1024];
byte outbuffer[] = new byte[1024];
String User_Password;
Socket socket;
try 
{
// Connect EZserver
socket= new Socket(ezserver_ip, ezserver_port);
OutputStream outstream =socket.getOutputStream();
InputStream instream =socket.getInputStream();

// Send EZserver HTTP Command
User_Password=username+':'+password;
sendbuffer="GET HTTP/1.1 /token/createtokenbased64?encrpty="+Base64.encodeToString(User_Password.getBytes(), Base64.DEFAULT)+"\r\nUser-Agent=EZhometech\r\n\r\n";
outbuffer=sendbuffer.getBytes();
outstream.write(outbuffer);

// Receive EZserver HTTP Response
int toread=1024;
int len=0;
for(int index=0;index<toread;)
{
len=instream.read(inbuffer,index,toread-index);
if (len<0) break;
index=index+len;
}
revbuffer= new String(inbuffer);


// Close Socket
outstream.close();
instream.close();

// Get token

if (revbuffer.contains("200 OK")== false)
{
return null;
}else
{
keyword_pos=revbuffer.indexOf("token=");
if (keyword_pos!=-1)
{
try 
{
crln_pos=revbuffer.indexOf("\r\n",keyword_pos);
token= revbuffer.substring (keyword_pos+6,crln_pos);
WifiManager wifi = (WifiManager) getSystemService(Context.WIFI_SERVICE); 
maciddot =wifi.getConnectionInfo().getMacAddress(); 
macid=maciddot.substring(0,2)+maciddot.substring(3,5)+maciddot.substring(6,8)+
maciddot.substring(9,11)+maciddot.substring(12,14)+maciddot.substring(15,17);
// Connect EZserver
socket= new Socket(ezserver_ip, ezserver_port);
outstream =socket.getOutputStream();
instream =socket.getInputStream();

// Send EZserver HTTP Command
sendbuffer="GET HTTP/1.1 /server/set_player_mac_address?token="+token+":macid="+macid+"\r\nUser-Agent=EZhometech\r\n\r\n";
outbuffer=sendbuffer.getBytes();
outstream.write(outbuffer);

// Receive EZserver HTTP Response
toread=1024;
len=0;
for(int index=0;index<toread;)
{
len=instream.read(inbuffer,index,toread-index);
if (len<0) break;
index=index+len;
}
revbuffer= new String(inbuffer);

// Close Socket
outstream.close();
instream.close(); 
}catch (Exception ex) {
Log.e(TAG, "Use Wired Cable...", ex);
}


return token;
} else
{
return null;
}
}
} catch (Exception ex) {
Log.e(TAG, "error: " + ex.getMessage(), ex);
return null;
}

}
private String User_Logout(String token, String ezserver_ip, int ezserver_port, String username, String password){

String sendbuffer = null;
String revbuffer = null;
int keyword_pos=0;
int crln_pos=0;
byte inbuffer[] = new byte[1024];
byte outbuffer[] = new byte[1024];
Socket socket;
try 
{
// Connect EZserver
socket= new Socket(ezserver_ip, ezserver_port);
OutputStream outstream =socket.getOutputStream();
InputStream instream =socket.getInputStream();

// Send EZserver HTTP Command
sendbuffer="GET HTTP/1.1 /token/destroytoken?token="+token+"\r\nUser-Agent=EZhometech\r\n\r\n";
outbuffer=sendbuffer.getBytes();
outstream.write(outbuffer);

// Receive EZserver HTTP Response
int toread=1024;
int len=0;
for(int index=0;index<toread;)
{
len=instream.read(inbuffer,index,toread-index);
if (len<0) break;
index=index+len;
}
revbuffer= new String(inbuffer);
// Close Socket
outstream.close();
instream.close();

// Get token
if (revbuffer.contains("200 OK")== false)
{
g_token=null;
return null;
}else
{
keyword_pos=revbuffer.indexOf("token=");
if (keyword_pos!=-1)
{
crln_pos=revbuffer.indexOf("\r\n",keyword_pos);
token= revbuffer.substring (keyword_pos+6,crln_pos);
return token;
} else
{
return null;
}
}

} catch (Exception ex) {
Log.e(TAG, "error: " + ex.getMessage(), ex);
return null;
}

}
private boolean Check_Player_license(String token, String ezserver_ip, int ezserver_port){

String sendbuffer = null;
String revbuffer = null;
byte inbuffer[] = new byte[1024];
byte outbuffer[] = new byte[1024];
Socket socket;
try 
{
// Connect EZserver
socket= new Socket(ezserver_ip, ezserver_port);
OutputStream outstream =socket.getOutputStream();
InputStream instream =socket.getInputStream();

// Send EZserver HTTP Command
sendbuffer="GET HTTP/1.1 /server/check_ezsplayer?token="+token+"\r\nUser-Agent=EZhometech\r\n\r\n";
outbuffer=sendbuffer.getBytes();
outstream.write(outbuffer);

// Receive EZserver HTTP Response
int toread=1024;
int len=0;
for(int index=0;index<toread;)
{
len=instream.read(inbuffer,index,toread-index);
if (len<0) break;
index=index+len;
}
revbuffer= new String(inbuffer);
// Close Socket
outstream.close();
instream.close();


// Get token
if (revbuffer.contains("200 OK")== true)
{
return true;
}else
{
return false;
}
} catch (Exception ex) {
Log.e(TAG, "error: " + ex.getMessage(), ex);
return false;
}

}
private boolean Get_HTTP_Port(String token, String ezserver_ip, int ezserver_port){

String sendbuffer = null;
String revbuffer = null;
int keyword_pos=0;
int crln_pos=0;
byte inbuffer[] = new byte[1024];
byte outbuffer[] = new byte[1024];
Socket socket;
try 
{
// Connect EZserver
socket= new Socket(ezserver_ip, ezserver_port);
OutputStream outstream =socket.getOutputStream();
InputStream instream =socket.getInputStream();

// Send EZserver HTTP Command
sendbuffer="GET HTTP/1.1 /server/inquery_server_httpport?token="+token+"\r\nUser-Agent=EZhometech\r\n\r\n";
outbuffer=sendbuffer.getBytes();
outstream.write(outbuffer);

// Receive EZserver HTTP Response
int toread=1024;
int len=0;
for(int index=0;index<toread;)
{
len=instream.read(inbuffer,index,toread-index);
if (len<0) break;
index=index+len;
}
revbuffer= new String(inbuffer);
// Close Socket
outstream.close();
instream.close();


// Get token
if (revbuffer.contains("200 OK")== true)
{
keyword_pos=revbuffer.indexOf("httpport=");
if (keyword_pos!=-1)
{
crln_pos=revbuffer.indexOf("\r\n",keyword_pos);
g_httpport= revbuffer.substring (keyword_pos+9,crln_pos);
return true;
} else
{
return false;
}

}else
{
return false;
}
} catch (Exception ex) {
Log.e(TAG, "error: " + ex.getMessage(), ex);
return false;
}

}

private void StartSetting(String message) {
Intent intent = new Intent(Login.this, Setting.class);
intent.putExtra("ezserver_ip", g_ezserver_ip);
intent.putExtra("http_port", Integer.toString(g_ezserver_port));
intent.putExtra("user_name", g_user_name);
intent.putExtra("passowrd", g_password);
Login.this.startActivityForResult(intent, SETTING_REQUEST);


}


private void StartIPTV() {


Intent intent = new Intent(Login.this, Ovp.class);
int i=0;
String ch_url;
intent.putExtra("token", g_token);
intent.putExtra("ezserver_ip", g_ezserver_ip);
intent.putExtra("http_base_port", Integer.toString(g_ezserver_port));
intent.putExtra("http_port", g_httpport);
String CHFileName=g_ch_list_in_array.GetCHFileName(g_cur_player_ch_index);
ch_url=CHFileName;
//indextemp=g_cur_player_ch_index+1;
//ch_url=indextemp+".ch";
intent.putExtra("churl", ch_url);
intent.putExtra("cur_ch_no", Integer.toString(g_cur_ch_no));
intent.putExtra("total_ch_no", Integer.toString(g_total_ch_no));
intent.putExtra("user_name", g_user_name);
intent.putExtra("passowrd", g_password);

Login.this.startActivityForResult(intent, IPTV_REQUEST);


}
private void StartVOD() {


Intent intent = new Intent(Login.this, Ovp_VOD.class);
int i=0;
String movie_url;

intent.putExtra("token", g_token);
intent.putExtra("ezserver_ip", g_ezserver_ip);
intent.putExtra("http_base_port", Integer.toString(g_ezserver_port));
intent.putExtra("http_port", g_httpport);
String MovieFileName=g_movie_list_in_array.GetMovieFileName(g_cur_player_movie_index);
movie_url=MovieFileName;
Get_Movie_Duration_Bitrate(g_token,g_ezserver_ip,g_ezserver_port,g_current_movie_folder_list_no,g_cur_player_movie_index);
double duration=g_movie_list_in_array.GetMovieDRM_Duration(g_cur_player_movie_index);
double bitrate=g_movie_list_in_array.GetMovieDRM_Bitrate(g_cur_player_movie_index);
intent.putExtra("movieurl", movie_url);
intent.putExtra("user_name", g_user_name);
intent.putExtra("passowrd", g_password);
intent.putExtra("duration", Double.toString(duration));
intent.putExtra("bitrate", Double.toString(bitrate));

Login.this.startActivityForResult(intent, VOD_REQUEST);


}
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == SETTING_REQUEST) {
if (resultCode == RESULT_OK) {
if (g_token!=null)
{
g_token=User_Logout(g_token,g_ezserver_ip,g_ezserver_port,g_user_name,g_password);
g_token=null;

}
g_ezserver_ip=data.getStringExtra("ezserver_ip");
g_management_ip=data.getStringExtra("mamagement_ip");
g_ezserver_port=Integer.valueOf(data.getStringExtra("http_port"));
g_user_name=data.getStringExtra("user_name");
g_password=data.getStringExtra("passowrd");
Update_Config();
}else if(resultCode == RESULT_CANCELED){

}
}else if (requestCode == IPTV_REQUEST) {
if (resultCode == RESULT_OK) {
g_cur_ch_no=Integer.valueOf(data.getStringExtra("cur_ch_no"));
}
}else if (requestCode == VOD_REQUEST) {
if (resultCode == RESULT_OK) {
}
}

}
// Get Channel Category
private int Get_Channel_Category(String token, String ezserver_ip, int ezserver_port){

String sendbuffer = null;
String revbuffer = null;
byte inbuffer[] = new byte[1024];
byte outbuffer[] = new byte[1024];
String folderlist = null;
String folder_name;
Socket socket;
int keyword_pos=0;
int crln_pos=0;
int total_folder_no=0;
try 
{
// Connect EZserver
socket= new Socket(ezserver_ip, ezserver_port);


OutputStream outstream =socket.getOutputStream();
InputStream instream =socket.getInputStream();

// Send EZserver HTTP Command
sendbuffer="GET HTTP/1.1 /server/get_channel_category?token="+token+"\r\nUser-Agent=EZhometech\r\n\r\n";
outbuffer=sendbuffer.getBytes();
outstream.write(outbuffer);

// Receive EZserver HTTP Response
int toread=1024;
int len=0;
for(int index=0;index<toread;)
{
len=instream.read(inbuffer,index,toread-index);
if (len<0) break;
index=index+len;
}
revbuffer= new String(inbuffer);
// Close Socket
outstream.close();
instream.close();


// Get token
if (revbuffer.contains("200 OK")== true)
{
//total_ch_no=0;
folderlist=revbuffer.substring(revbuffer.indexOf("category="));
do {
keyword_pos=folderlist.indexOf("category=");
if (keyword_pos!=-1)
{

crln_pos=folderlist.indexOf("\r\n",keyword_pos);
folder_name= folderlist.substring (keyword_pos+9,crln_pos);
g_folder_list_in_array[total_folder_no]=folder_name;
folderlist=folderlist.substring(crln_pos);
total_folder_no++;
} else
{
break;
}
} while(true); 

return total_folder_no;
}else
{
return 0;
}
} catch (Exception ex) {
Log.e(TAG, "error: " + ex.getMessage(), ex);
return 0;
}

}
// Get Channel List by category
private int Get_Channel_List(String token, String ezserver_ip, int ezserver_port, String category){

String sendbuffer = null;
String revbuffer = null;
byte inbuffer[] = new byte[1024*100];
byte outbuffer[] = new byte[1024];
String chlist = null;
String ch_name;
String icon_path;
Socket socket;
int keyword_pos=0;
int crln_pos=0;
int total_ch_no=0;
try 
{

// Connect EZserver
socket= new Socket(ezserver_ip, ezserver_port);


OutputStream outstream =socket.getOutputStream();
InputStream instream =socket.getInputStream();

// Send EZserver HTTP Command
sendbuffer="GET HTTP/1.1 /server/get_channel_list?token="+token+"&category="+category+"\r\nUser-Agent=EZhometech\r\n\r\n";
outbuffer=sendbuffer.getBytes();
outstream.write(outbuffer);

// Receive EZserver HTTP Response
int toread=1024*100;
int len=0;
for(int index=0;index<toread;)
{
len=instream.read(inbuffer,index,toread-index);
if (len<0) break;
index=index+len;
}
revbuffer= new String(inbuffer);
// Close Socket
outstream.close();
instream.close();


// Get token
if (revbuffer.contains("200 OK")== true)
{
chlist=revbuffer.substring(revbuffer.indexOf("name="));
do {
keyword_pos=chlist.indexOf("name=");
if (keyword_pos!=-1)
{
crln_pos=chlist.indexOf("\r\n",keyword_pos);
ch_name= chlist.substring (keyword_pos+5,crln_pos);
g_ch_list_in_array.AddCHFileName(total_ch_no,ch_name);
chlist=chlist.substring(crln_pos);
keyword_pos=chlist.indexOf("icon=");
if (keyword_pos!=-1)
{

crln_pos=chlist.indexOf("\r\n",keyword_pos);
icon_path= chlist.substring (keyword_pos+5,crln_pos);
if (icon_path.length()==0)

icon_path="file://middleware/pictures/ch_default_icon.jpg";

g_ch_list_in_array.AddCHPictureFileName(total_ch_no,icon_path);
chlist=chlist.substring(crln_pos);

}else
{
break;
}


total_ch_no++;
} else
{
break;
}
} while(true); 

return total_ch_no;
}else
{
return 0;
}
} catch (Exception ex) {
Log.e(TAG, "error: " + ex.getMessage(), ex);
return 0;
}

}
// Get All Channel List
private int Get_All_Channel_List(String token, String ezserver_ip, int ezserver_port){

String sendbuffer = null;
String revbuffer = null;
byte inbuffer[] = new byte[1024*100];
byte outbuffer[] = new byte[1024];
String chlist = null;
String ch_name;
String icon_path;
Socket socket;
int keyword_pos=0;
int crln_pos=0;
int total_ch_no=0;
try 
{

// Connect EZserver
socket= new Socket(ezserver_ip, ezserver_port);


OutputStream outstream =socket.getOutputStream();
InputStream instream =socket.getInputStream();

// Send EZserver HTTP Command
sendbuffer="GET HTTP/1.1 /server/query_channel_list?token="+token+"\r\nUser-Agent=EZhometech\r\n\r\n";
outbuffer=sendbuffer.getBytes();
outstream.write(outbuffer);

// Receive EZserver HTTP Response
int toread=1024*100;
int len=0;
for(int index=0;index<toread;)
{
len=instream.read(inbuffer,index,toread-index);
if (len<0) break;
index=index+len;
}
revbuffer= new String(inbuffer);
// Close Socket
outstream.close();
instream.close();


// Get token
if (revbuffer.contains("200 OK")== true)
{
chlist=revbuffer.substring(revbuffer.indexOf("name="));
do {
keyword_pos=chlist.indexOf("name=");

if (keyword_pos!=-1)
{
crln_pos=chlist.indexOf("\r\n",keyword_pos);
ch_name= chlist.substring (keyword_pos+5,crln_pos);
g_ch_list_in_array.AddCHFileName(total_ch_no,ch_name);
chlist=chlist.substring(crln_pos);
keyword_pos=chlist.indexOf("icon=");
if (keyword_pos!=-1)
{

crln_pos=chlist.indexOf("\r\n",keyword_pos);
icon_path= chlist.substring (keyword_pos+5,crln_pos);
if (icon_path.length()==0)

icon_path="file://middleware/pictures/ch_default_icon.jpg";
}

g_ch_list_in_array.AddCHPictureFileName(total_ch_no,icon_path);
chlist=chlist.substring(crln_pos);

}else
{
break;
}


total_ch_no++;
} else
{
break;
}
} while(true); 

return total_ch_no;
}else
{
return 0;
}
} catch (Exception ex) {
Log.e(TAG, "error: " + ex.getMessage(), ex);
return 0;
}

}
// Get Movie Category
private int Get_Movie_Category(String token, String ezserver_ip, int ezserver_port){

String sendbuffer = null;
String revbuffer = null;
byte inbuffer[] = new byte[1024*3];
byte outbuffer[] = new byte[1024];
String folderlist = null;
String folder_name;
Socket socket;
int keyword_pos=0;
int crln_pos=0;
int total_folder_no=0;
try 
{
// Connect EZserver
socket= new Socket(ezserver_ip, ezserver_port);


OutputStream outstream =socket.getOutputStream();
InputStream instream =socket.getInputStream();

// Send EZserver HTTP Command
/server/app_get_folderlist_in_folder?token="+token+"&path=middleware/videos"+"&appname=ez38910fhdj"+"\r\nUser-Agent=EZhometech\r\n\r\n";
sendbuffer="GET HTTP/1.1 /server/get_movie_category?token="+token+"\r\nUser-Agent=EZhometech\r\n\r\n";
outbuffer=sendbuffer.getBytes();
outstream.write(outbuffer);

// Receive EZserver HTTP Response
int toread=1024*3;
int len=0;
for(int index=0;index<toread;)
{
len=instream.read(inbuffer,index,toread-index);
if (len<0) break;
index=index+len;
}
revbuffer= new String(inbuffer);
// Close Socket
outstream.close();
instream.close();


// Get token
if (revbuffer.contains("200 OK")== true)
{

//total_ch_no=0;
folderlist=revbuffer.substring(revbuffer.indexOf("category="));
do {
keyword_pos=folderlist.indexOf("category=");
if (keyword_pos!=-1)
{

crln_pos=folderlist.indexOf("\r\n",keyword_pos);
folder_name= folderlist.substring (keyword_pos+9,crln_pos);
g_folder_list_in_array[total_folder_no]=folder_name;
folderlist=folderlist.substring(crln_pos);
total_folder_no++;
} else
{
break;
}
} while(true); 

return total_folder_no;
}else
{
return 0;
}
} catch (Exception ex) {
Log.e(TAG, "error: " + ex.getMessage(), ex);
return 0;
}

}
// Get Movie List by categroy
private int Get_Movie_List(String token, String ezserver_ip, int ezserver_port, String category){

String sendbuffer = null;
String revbuffer = null;
byte inbuffer[] = new byte[1024*100];
byte outbuffer[] = new byte[1024];
String movielist = null;
String movie_name;
String icon_path;
Socket socket;
int keyword_pos=0;
int crln_pos=0;
int total_movie_no=0;
try 
{

// Connect EZserver
socket= new Socket(ezserver_ip, ezserver_port);


OutputStream outstream =socket.getOutputStream();
InputStream instream =socket.getInputStream();

// Send EZserver HTTP Command
sendbuffer="GET HTTP/1.1 /server/get_movie_list?token="+token+"&category="+category+"\r\nUser-Agent=EZhometech\r\n\r\n";
outbuffer=sendbuffer.getBytes();
outstream.write(outbuffer);

// Receive EZserver HTTP Response
int toread=1024*100;
int len=0;
for(int index=0;index<toread;)
{
len=instream.read(inbuffer,index,toread-index);
if (len<0) break;
index=index+len;
}
revbuffer= new String(inbuffer);
// Close Socket
outstream.close();
instream.close();


// Get token
if (revbuffer.contains("200 OK")== true)
{
//total_ch_no=0;
movielist=revbuffer.substring(revbuffer.indexOf("name="));
do {
keyword_pos=movielist.indexOf("name=");
if (keyword_pos!=-1)
{

crln_pos=movielist.indexOf("\r\n",keyword_pos);
movie_name= movielist.substring (keyword_pos+5,crln_pos);
g_movie_list_in_array.AddMovieFileName(total_movie_no,movie_name);
movielist=movielist.substring(crln_pos);
keyword_pos=movielist.indexOf("img=");
if (keyword_pos!=-1)
{

crln_pos=movielist.indexOf("\r\n",keyword_pos);
icon_path= movielist.substring (keyword_pos+4,crln_pos);
if (icon_path.length()==0)

icon_path="middleware/pictures/movie_default_icon.png";

g_movie_list_in_array.AddMoviePictureFileName(total_movie_no,icon_path);
movielist=movielist.substring(crln_pos);

}else
{
break;
}


total_movie_no++;
} else
{
break;
}
} while(true); 

return total_movie_no;
}else
{
return 0;
}
} catch (Exception ex) {
Log.e(TAG, "error: " + ex.getMessage(), ex);
return 0;
}

}
// Get All Movie List
private int Get_All_Movie_List(String token, String ezserver_ip, int ezserver_port, String category){

String sendbuffer = null;
String revbuffer = null;
byte inbuffer[] = new byte[1024*15];
byte outbuffer[] = new byte[1024];
String movielist = null;
String movie_name;
String icon_path;
Socket socket;
int keyword_pos=0;
int crln_pos=0;
int total_movie_no=0;
try 
{

// Connect EZserver
socket= new Socket(ezserver_ip, ezserver_port);


OutputStream outstream =socket.getOutputStream();
InputStream instream =socket.getInputStream();

// Send EZserver HTTP Command
sendbuffer="GET HTTP/1.1 /server/query_movie_list?token="+token+"\r\nUser-Agent=EZhometech\r\n\r\n";
outbuffer=sendbuffer.getBytes();
outstream.write(outbuffer);

// Receive EZserver HTTP Response
int toread=1024*15;
int len=0;
for(int index=0;index<toread;)
{
len=instream.read(inbuffer,index,toread-index);
if (len<0) break;
index=index+len;
}
revbuffer= new String(inbuffer);
// Close Socket
outstream.close();
instream.close();


// Get token
if (revbuffer.contains("200 OK")== true)
{
movielist=revbuffer.substring(revbuffer.indexOf("name="));
do {
keyword_pos=movielist.indexOf("name=");
if (keyword_pos!=-1)
{

crln_pos=movielist.indexOf("\r\n",keyword_pos);
movie_name= movielist.substring (keyword_pos+5,crln_pos);
g_movie_list_in_array.AddMovieFileName(total_movie_no,movie_name);
movielist=movielist.substring(crln_pos);
keyword_pos=movielist.indexOf("img=");
if (keyword_pos!=-1)
{

crln_pos=movielist.indexOf("\r\n",keyword_pos);
icon_path= movielist.substring (keyword_pos+4,crln_pos);
if (icon_path.length()==0)

icon_path="middleware/pictures/movie_default_icon.png";

g_movie_list_in_array.AddMoviePictureFileName(total_movie_no,icon_path);
movielist=movielist.substring(crln_pos);

}else
{
break;
}


total_movie_no++;
} else
{
break;
}
} while(true); 

return total_movie_no;
}else
{
return 0;
}
} catch (Exception ex) {
Log.e(TAG, "error: " + ex.getMessage(), ex);
return 0;
}

}
private int Get_Movie_Duration_Bitrate(String token, String ezserver_ip, int ezserver_port,int folder_index, int movie_index){

String sendbuffer = null;
String revbuffer = null;
byte inbuffer[] = new byte[1024];
byte outbuffer[] = new byte[1024];
String movielist = null;
String file_size;
Socket socket;
int keyword_pos=0;
int crln_pos=0;
int total_movie_no=0;
String moviename;
String sduration;
String sbitrate;
double duration;
double bitrate;
try 
{
// Connect EZserver
socket= new Socket(ezserver_ip, ezserver_port);


OutputStream outstream =socket.getOutputStream();
InputStream instream =socket.getInputStream();

// Send EZserver HTTP Command
moviename=g_movie_list_in_array.GetMovieFileName(movie_index);
sendbuffer="GET HTTP/1.1 /server/get_movie_duration_bitrate?token="+token+"&movie_name="+moviename+"\r\nUser-Agent=EZhometech\r\n\r\n";
outbuffer=sendbuffer.getBytes();
outstream.write(outbuffer);

// Receive EZserver HTTP Response
int toread=1024;
int len=0;
for(int index=0;index<toread;)
{
len=instream.read(inbuffer,index,toread-index);
if (len<0) break;
index=index+len;
}
revbuffer= new String(inbuffer);
// Close Socket
outstream.close();
instream.close();


// Get token
if (revbuffer.contains("200 OK")== true)
{
//total_ch_no=0;
movielist=revbuffer.substring(revbuffer.indexOf("duration="));
//do {
keyword_pos=movielist.indexOf("duration=");
if (keyword_pos!=-1)
{

crln_pos=movielist.indexOf("\r\n",keyword_pos);
sduration= movielist.substring (keyword_pos+9,crln_pos); 
movielist=movielist.substring(crln_pos);
keyword_pos=movielist.indexOf("bitrate=");
if (keyword_pos!=-1)
{

crln_pos=movielist.indexOf("\r\n",keyword_pos);
sbitrate= movielist.substring (keyword_pos+8,crln_pos);
bitrate=Double.parseDouble(sbitrate);
duration=Double.parseDouble(sduration);
g_movie_list_in_array.AddMovieDRM_Info(movie_index,duration,bitrate);
movielist=movielist.substring(crln_pos);

}else
{
return 0;
}


total_movie_no++;
} else
{
return 0;
}

return 1;
}else
{
return 0;
}
} catch (Exception ex) {
Log.e(TAG, "error: " + ex.getMessage(), ex);
return 0;
}

}
public class VOD_ImageAdapter extends BaseAdapter { 
private Context mContext; 
private int movie_no=1;
String movie_icon_url[]=new String[1000];
View grid_array[]=new View[1000];

// Keep all Images in array 
public Integer[] mThumbIds = { 
}; 

// Constructor 
public VOD_ImageAdapter(Context c){ 
mContext = c; 
g_total_movie_no=Get_Movie_List(g_token,g_ezserver_ip,g_ezserver_port,g_folder_list_in_array[g_current_movie_folder_list_no]);
g_message=g_total_movie_no+" movies are online.";
Toast.makeText(Login.this, g_message, Toast.LENGTH_LONG).show();


@Override
public int getCount() { 
return g_total_movie_no; 

@Override
public Object getItem(int position) { 
return null;


@Override
public long getItemId(int position) { 
return 0; 


@Override
public View getView(int position, View convertView, ViewGroup parent) { 

View grid=null;
String movie_name_wo_extent_name;
if (g_total_movie_no>0)
{
if (movie_icon_url[position]==null)

if (grid_array[position]==null)
{
LayoutInflater inflater = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
grid = new View(mContext);
grid = inflater.inflate(R.layout.grid_single, null);
}
TextView textView = (TextView) grid.findViewById(R.id.grid_text);
ImageView imageView = (ImageView)grid.findViewById(R.id.grid_image);
movie_no=g_start_position+position;

String UnicodeString;
String MovieFileName;
String MovieUicodeName;

MovieFileName=g_movie_list_in_array.GetMovieFileName(movie_no);
UnicodeString=MovieFileName.replaceAll("%u", "\\\\u");
MovieUicodeName=decodeUnicode(UnicodeString);
textView.setText(MovieUicodeName);

String MoviePictureFileName=g_movie_list_in_array.GetMoviePictureFileName(movie_no);

movie_name_wo_extent_name=MoviePictureFileName.substring (7);
movie_icon_url[position]="http://"+g_ezserver_ip+":"+g_ezserver_port+"/"+movie_name_wo_extent_name;
new DownloadImageTask(imageView).execute(movie_icon_url[position]);

grid_array[position]=grid;
}else
{
grid=grid_array[position];

}
return grid; 

}
public class All_Movie_ImageAdapter extends BaseAdapter { 
private Context mContext; 
private int movie_no=1;
String movie_icon_url[]= new String[1000];
View grid_array[]=new View[1000];

// Keep all Images in array 
public Integer[] mThumbIds = { 
}; 

// Constructor 
public All_Movie_ImageAdapter(Context c){ 
mContext = c; 
g_total_movie_no=Get_All_Movie_List(g_token,g_ezserver_ip,g_ezserver_port,g_folder_list_in_array[g_current_movie_folder_list_no]);


@Override
public int getCount() { 
return g_total_movie_no; 

@Override
public Object getItem(int position) { 
return null;


@Override
public long getItemId(int position) { 
return 0; 


@Override
public View getView(int position, View convertView, ViewGroup parent) { 
View grid=null;
int keyword_pos=0;
int crln_pos=0;
String movie_name_wo_extent_name;


if (g_total_movie_no>0)
{
if (movie_icon_url[position]==null)

if (grid_array[position]==null)
{
LayoutInflater inflater = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
grid = new View(mContext);
grid = inflater.inflate(R.layout.grid_single, null);
}
TextView textView = (TextView) grid.findViewById(R.id.grid_text);
ImageView imageView = (ImageView)grid.findViewById(R.id.grid_image);
movie_no=position;
String UnicodeString;
String MovieFileName;
String MovieUicodeName;

MovieFileName=g_movie_list_in_array.GetMovieFileName(movie_no);
UnicodeString=MovieFileName.replaceAll("%u", "\\\\u");
MovieUicodeName=decodeUnicode(UnicodeString);
textView.setText(MovieUicodeName);

String MoviePictureFileName=g_movie_list_in_array.GetMoviePictureFileName(movie_no);


movie_name_wo_extent_name=MoviePictureFileName.substring (7);
movie_icon_url[position]="http://"+g_ezserver_ip+":"+g_ezserver_port+"/"+movie_name_wo_extent_name;

new DownloadImageTask(imageView).execute(movie_icon_url[position]);
grid_array[position]=grid;

}else
{
grid=grid_array[position];
}

}

return grid; 

}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
MenuItem mnuName;
getMenuInflater().inflate(R.menu.main, menu);
if (menu!=null)
{
g_menu=menu;
g_menu.clear();
mnuName=g_menu.add(0,0, 0, "Setting");
mnuName.setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM | MenuItem.SHOW_AS_ACTION_WITH_TEXT);
return true;
}else
{
return false;

}

public boolean onPrepareOptionsMenu(Menu menu) {

return true;

}
@Override public boolean onOptionsItemSelected(MenuItem item) { 
// Handle presses on the action bar items 
int nitemIndex;
int i;
MenuItem mnuName;
nitemIndex=item.getItemId();
if (g_total_ch_no>0)
{
if (nitemIndex==android.R.id.home)
{
}else if (nitemIndex==0)
{
g_total_folder_no=Get_Channel_Category(g_token,g_ezserver_ip,g_ezserver_port);
g_menu.clear();

mnuName=g_menu.add(0,0,0, "All CH");
mnuName.setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM | MenuItem.SHOW_AS_ACTION_WITH_TEXT);
for (i=0;i<g_total_folder_no;i++)
{
mnuName=g_menu.add(0,i+1, i+1, g_folder_list_in_array[i]);
mnuName.setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM | MenuItem.SHOW_AS_ACTION_WITH_TEXT); 
}

mnuName=g_menu.add(0,g_total_folder_no+1, g_total_folder_no+1, "Movie");
mnuName.setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM | MenuItem.SHOW_AS_ACTION_WITH_TEXT);
mnuName=g_menu.add(0,g_total_folder_no+2, g_total_folder_no+2, "Setting");
mnuName.setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM | MenuItem.SHOW_AS_ACTION_WITH_TEXT);
mGridview.setAdapter(new ImageAdapter(Login.this)); 
}else if (nitemIndex==g_total_folder_no+1)
{
g_total_folder_no=Get_Movie_Category(g_token,g_ezserver_ip,g_ezserver_port);
g_menu.clear();

mnuName=g_menu.add(0,0,0, "All CH");
mnuName.setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM | MenuItem.SHOW_AS_ACTION_WITH_TEXT);
for (i=0;i<g_total_folder_no;i++)
{
mnuName=g_menu.add(0,i+1, i+1, g_folder_list_in_array[i]);
mnuName.setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM | MenuItem.SHOW_AS_ACTION_WITH_TEXT); 
}

mnuName=g_menu.add(0,g_total_folder_no+1, g_total_folder_no+1, "Movie");
mnuName.setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM | MenuItem.SHOW_AS_ACTION_WITH_TEXT);
mnuName=g_menu.add(0,g_total_folder_no+2, g_total_folder_no+2, "Setting");
mnuName.setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM | MenuItem.SHOW_AS_ACTION_WITH_TEXT);
bGridView_IPTV_VOD_Use=2;
mGridview.setAdapter(new VOD_ImageAdapter(Login.this));
}else if (nitemIndex==g_total_folder_no+2)
{
StartSetting(null); 
}else
{
if (bGridView_IPTV_VOD_Use==1)
{
g_current_ch_folder_list_no=nitemIndex-1;
mGridview.setAdapter(new CH_ImageAdapter(Login.this)); 
}else if (bGridView_IPTV_VOD_Use==2)
{
g_current_movie_folder_list_no=nitemIndex-1;
mGridview.setAdapter(new VOD_ImageAdapter(Login.this)); 
}
}
}else if (g_total_ch_no==0)
{
if (nitemIndex==0)
{
StartSetting(null); 
}
}

return true; 
}

private boolean Show_Channel_No()
{
mChannelNoInputField.setCursorVisible(false);
mChannelNoInputField.setVisibility(View.VISIBLE);
mChannelNoInputField.requestFocus();

return true;
}

public boolean onKeyDown(int keyCode, KeyEvent event) 
{

if ((keyCode == KeyEvent.KEYCODE_0)||(keyCode == KeyEvent.KEYCODE_1)||(keyCode == KeyEvent.KEYCODE_2)||(keyCode == KeyEvent.KEYCODE_3)||
(keyCode == KeyEvent.KEYCODE_4)||(keyCode == KeyEvent.KEYCODE_5)||(keyCode == KeyEvent.KEYCODE_6)||
(keyCode == KeyEvent.KEYCODE_7)||(keyCode == KeyEvent.KEYCODE_8)||(keyCode == KeyEvent.KEYCODE_9))

{
if (bFirstInputChannelNo==true)
{
Show_Channel_No();
int ntemp=keyCode-7;
String ch_no=Integer.toString(ntemp); 

mChannelNoInputField.setText(ch_no);
mChannelNoInputField.setSelection(1);

bFirstInputChannelNo=false;
InputChannelNo_scheduleTaskExecutor= Executors.newScheduledThreadPool(1);

// This schedule a task to run every 10 minutes:
InputChannelNo_queueFuture=InputChannelNo_scheduleTaskExecutor.scheduleAtFixedRate(new Runnable() {
public void run() {
runOnUiThread(new Runnable() {
public void run() {
// update your UI component here.
InputChannelNo_Delay++;
if (InputChannelNo_Delay==3)
{
String ch_no=mChannelNoInputField.getText().toString();
int nch_no;
nch_no=Integer.valueOf(ch_no);
InputChannelNo_Delay=0;
if ((nch_no>0)&&(nch_no<=g_total_ch_no))
{
g_cur_ch_no=nch_no;
g_cur_player_ch_index=g_cur_ch_no;
StartIPTV();
}
bFirstInputChannelNo=true;
mChannelNoInputField.setVisibility(View.GONE);
mChannelNoInputField.clearFocus();
InputChannelNo_queueFuture.cancel(true);
}
}
});
}
}, 0, 1, TimeUnit.SECONDS);

}else if (bFirstInputChannelNo==false)
{
InputChannelNo_Delay=0;
}
}
return super.onKeyDown(keyCode, event);
}
}


Copyright © EZhometech, Inc.