package skytv_com.banking.enjoymovie; import java.util.ArrayList; import java.util.Hashtable; import java.util.List; import skytv_com.banking.enjoymovie.bean.MovieHomeItem; import skytv_com.banking.enjoymovie.protocol.ConnectUtil; import skytv_com.banking.enjoymovie.protocol.ProtocolTag; import skytv_com.banking.enjoymovie.util.MyImageView; import android.app.AlertDialog; import android.content.DialogInterface; import android.content.Intent; import android.graphics.Bitmap; import android.os.Bundle; import android.os.Handler; import android.os.Looper; import android.os.Message; import android.text.Editable; import android.text.TextUtils; import android.text.TextWatcher; import android.util.Log; import android.view.View; import android.view.View.OnClickListener; import android.view.ViewGroup; import android.widget.Button; import android.widget.EditText; import android.widget.GridView; import android.widget.ImageView; import android.widget.RelativeLayout; import android.widget.TextView; import android.widget.TextView.BufferType; import android.widget.Toast; import com.banking.xc.utils.MyActivity; import com.banking.xc.utils.MySimpleAdapter; import com.google.zxing.BarcodeFormat; import com.google.zxing.EncodeHintType; import com.google.zxing.WriterException; import com.google.zxing.common.BitMatrix; import com.google.zxing.qrcode.QRCodeWriter; public class MovieHomeActivity extends MyActivity { /** Called when the activity is first created. */ public static EditText contentET; public static Button searchButton; private RelativeLayout mLayout1,mLayout2; private Button connectButton; private RelativeLayout layout1,layout2,layout3,layout4,layout5,layout6, layout7,layout8,layout9; private TextView category1,category2,category3,category4,category5,category6; List<MovieHomeItem> mMovieHomeItems; //SocketServerUtil server; private String serverIp; static QRImageDialogFragment qrImageDialog; MyHandler controlHandler; public static final int TYPE_SHOW_QRFRAGMENT = 1001; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.home); initView(); controlHandler = new MyHandler(); adaptLayoutData(); //serverInit(); //gridView.performItemClick(view, position, id) } public void toMovieDetail(String id){ //WebActivity.startWebActivity(MovieHomeActivity.this,"http://119.167.128.146/youku/677592F2BA23D828A284C15849/0300080200510819EF001303C2D6C8419B9311-4225-5AA7-D174-4CB80B691E68.mp4"); WebActivity.startWebActivity(MovieHomeActivity.this,"http://112.124.26.176:7777/list#/play/"+id,WebActivity.DETAIL); //VideoPlayerActivity.startActivity(MovieHomeActivity.this); } public void toCategory(String cid){ WebActivity.startWebActivity(MovieHomeActivity.this,"http://112.124.26.176:7777/list#/tags/"+cid); } class MyHandler extends Handler { public MyHandler() { } public MyHandler(Looper L) { super(L); } // 子类必须重写此方法,接受数据 @Override public void handleMessage(Message msg) { Log.d("yinhang", "handleMessage"+msg.what); switch(msg.what){ case TYPE_SHOW_QRFRAGMENT: //非通讯 showQRCodeByFragment(); break; case ProtocolTag.TYPE_CONNECT_TAG: if(qrImageDialog!=null){ qrImageDialog.dismiss(); } ConnectUtil.connectClient(connectButton); Toast.makeText(MovieHomeActivity.this, "已成功连接手机!" , Toast.LENGTH_LONG).show(); break; case ProtocolTag.TYPE_CLICK_SUBMIT_TAG: searchButton.performClick(); break; case ProtocolTag.TYPE_CLICK_CATEGORY_TAG: final int selectedCategory = msg.getData().getInt("selected"); Toast.makeText(MovieHomeActivity.this, "TYPE_CLICK_CATEGORY_TAG"+selectedCategory , Toast.LENGTH_LONG).show(); switch(selectedCategory){ case ProtocolTag.SELECT_CATEGORY_LOVE: category1.performClick(); break; case ProtocolTag.SELECT_CATEGORY_CANDY: category2.performClick(); break; case ProtocolTag.SELECT_CATEGORY_ACTION: category3.performClick(); break; case ProtocolTag.SELECT_CATEGORY_VENTURE: category4.performClick(); break; case ProtocolTag.SELECT_CATEGORY_FICTION: category5.performClick(); break; case ProtocolTag.SELECT_CATEGORY_STORY: category6.performClick(); break; } break; case ProtocolTag.TYPE_TEXT_INPUT_TAG: final String text = msg.getData().getString("key"); Log.d("yinhang", "TYPE_TEXT_INPUT_TAG"+text); //searchButton.setBackgroundDrawable(null); contentET.post(new Runnable(){ @Override public void run() { contentET.setText(text,BufferType.EDITABLE); } }); Log.d("yinhang", "TYPE_TEXT_INPUT_TAG finish"); break; case ProtocolTag.TYPE_VOICE_INPUT_TAG: //重复了 break; case ProtocolTag.TYPE_SELECT_MOVIE_TAG: final int selectedMovie = msg.getData().getInt("selected"); Toast.makeText(MovieHomeActivity.this, "TYPE_SELECT_MOVIE_TAG"+selectedMovie , Toast.LENGTH_LONG).show(); functionMovieMessage(selectedMovie); break; } super.handleMessage(msg); } } public void functionMovieMessage(int selectedMovie){ Log.d("yinhang","functionMovieMessage-->"+selectedMovie); switch(selectedMovie){ case 1: layout1.performClick(); break; case 2: layout2.performClick(); break; case 3: layout3.performClick(); break; case 4: layout4.performClick(); break; case 5: layout5.performClick(); break; case 6: layout6.performClick(); break; case 7: layout7.performClick(); break; case 8: layout8.performClick(); break; case 9: mLayout1.performClick(); break; case 10: mLayout2.performClick(); break; } } @Override protected void onResume() { // TODO Auto-generated method stub super.onResume(); // } public void checkConnectState(){ } public void showQRCodeByFragment(){ if(qrImageDialog == null){ qrImageDialog = new QRImageDialogFragment(); } if(qrImageDialog.isResumed()){ Log.d("yinhang","serverInit() qrImageDialog.isResumed()->"); return; } qrImageDialog.setCancelable(true); if(TextUtils.isEmpty(serverIp)){ Log.d("yinhang","serverInit() serverIp empty->"); return; } Bitmap bm = createQRImage(serverIp); Log.d("","showQRCodeByFragment() serverIp"+serverIp); if(bm!=null){ qrImageDialog.setQRImage(bm); }else{ return; } qrImageDialog.show(getSupportFragmentManager(), "prompt"); } public Handler getHandler(){ return controlHandler; } public Bitmap createQRImage(String ip) { int QR_WIDTH = 100; int QR_HEIGHT = 100; try { //判断URL合法性 if (ip == null || "".equals(ip) || ip.length() < 1) { return null; } Hashtable<EncodeHintType, String> hints = new Hashtable<EncodeHintType, String>(); hints.put(EncodeHintType.CHARACTER_SET, "utf-8"); //图像数据转换,使用了矩阵转换 BitMatrix bitMatrix = new QRCodeWriter().encode(ip, BarcodeFormat.QR_CODE, QR_WIDTH, QR_HEIGHT, hints); int[] pixels = new int[QR_WIDTH * QR_HEIGHT]; //下面这里按照二维码的算法,逐个生成二维码的图片, //两个for循环是图片横列扫描的结果 for (int y = 0; y < QR_HEIGHT; y++) { for (int x = 0; x < QR_WIDTH; x++) { if (bitMatrix.get(x, y)) { pixels[y * QR_WIDTH + x] = 0xff000000; } else { pixels[y * QR_WIDTH + x] = 0xffffffff; } } } //生成二维码图片的格式,使用ARGB_8888 Bitmap bitmap = Bitmap.createBitmap(QR_WIDTH, QR_HEIGHT, Bitmap.Config.ARGB_8888); bitmap.setPixels(pixels, 0, QR_WIDTH, 0, 0, QR_WIDTH, QR_HEIGHT); return bitmap; } catch (WriterException e) { e.printStackTrace(); } return null; } public void serverInit(){ if(SocketServerUtil.getInstance() == null){ Log.d("yinhang","serverInit() server is null"); Thread thread = new Thread(new Runnable() { @Override public void run() { SocketServerUtil.setInstance(new SocketServerUtil(MovieHomeActivity.this)); serverIp = SocketServerUtil.getWifiIp(MovieHomeActivity.this);//server.getServerIp(); controlHandler.sendEmptyMessage(TYPE_SHOW_QRFRAGMENT); Log.d("yinhang","serverInit() serverIp"+serverIp); boolean startServer = SocketServerUtil.getInstance().startServer(MovieHomeActivity.this); Log.d("yinhang","Never to here,Error!"); //成功的情况 if(!startServer){ //有错误 TODO ConnectUtil.connectShutDown(connectButton); } } }); thread.start(); }else{ Log.d("yinhang","serverInit() server is not null"); Log.d("yinhang","serverInit() server is not null ip:"+serverIp); controlHandler.sendEmptyMessage(TYPE_SHOW_QRFRAGMENT); } } public void showUnConnectDialoag(){ new AlertDialog.Builder(this) .setIcon(R.drawable.icon_logo) .setTitle("中断连接后您的手机将无法控制电视,确定中断吗?") .setPositiveButton(getString(android.R.string.ok), new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { ConnectUtil.connectClose(connectButton); } } ).setNegativeButton(getString(android.R.string.cancel), new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { } } ).show(); } public void initView(){ contentET = (EditText)this.findViewById(R.id.edit_text); searchButton = (Button)this.findViewById(R.id.searchButton); //gridView = (GridView)this.findViewById(R.id.item_gridView); mLayout1 = (RelativeLayout)this.findViewById(R.id.m_layout1); mLayout2 = (RelativeLayout)this.findViewById(R.id.m_layout2); //m1.setImageResource(R.drawable.image_m1); //m2.setImageResource(R.drawable.image_m1); category1 = (TextView) this.findViewById(R.id.id1); category2 = (TextView) this.findViewById(R.id.id2); category3 = (TextView) this.findViewById(R.id.id3); category4 = (TextView) this.findViewById(R.id.id4); category5 = (TextView) this.findViewById(R.id.id5); category6 = (TextView) this.findViewById(R.id.id6); category1.setOnClickListener(categoryOnClickListener); category2.setOnClickListener(categoryOnClickListener); category3.setOnClickListener(categoryOnClickListener); category4.setOnClickListener(categoryOnClickListener); category5.setOnClickListener(categoryOnClickListener); category6.setOnClickListener(categoryOnClickListener); connectButton = (Button)this.findViewById(R.id.connect_button); connectButton.setOnClickListener(new OnClickListener() { public void onClick(View v) { Log.d("yinhang","serverInit() onclick"); if(ConnectUtil.isConnect()){ showUnConnectDialoag(); }else{ serverInit(); } } }); searchButton.setOnClickListener(new OnClickListener() { public void onClick(View v) { Intent intent = new Intent(MovieHomeActivity.this,WebActivity.class);//VideoListActivity String keyword = contentET.getText().toString(); Log.d("yinhang", "searchButton"+keyword); /*if(TextUtils.isEmpty(keyword)){ return; }else{ intent.putExtra(VideoListActivity.VIDEO_KEYWORD, keyword); }*/ intent.putExtra("url", "http://112.124.26.176:7777/list"); MovieHomeActivity.this.startActivity(intent); } }); contentET.addTextChangedListener(new TextWatcher(){ @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { } @Override public void onTextChanged(CharSequence s, int start, int before, int count) { } @Override public void afterTextChanged(Editable s) { } }); } private OnClickListener categoryOnClickListener = new OnClickListener(){ @Override public void onClick(View v) { int id = v.getId(); switch(id){ case R.id.id1: toCategory("89"); break; case R.id.id2: toCategory("11"); break; case R.id.id3: toCategory("80"); break; case R.id.id4: toCategory("73"); break; case R.id.id5: toCategory("54"); break; case R.id.id6: toCategory("40"); break; } } }; private OnClickListener movieOnClickListener = new OnClickListener(){ @Override public void onClick(View v) { String movieId = (String) v.getTag(); toMovieDetail(movieId); } }; public void adaptLayoutData(){ mMovieHomeItems = new ArrayList<MovieHomeItem>(); for(int i=0;i<11;i++){ MovieHomeItem item = new MovieHomeItem(); item.setDesc("测试影评"); item.setMovieId("82011"); mMovieHomeItems.add(item); } MovieHomeItem item1 = new MovieHomeItem(); item1.setDesc("测试影评"); item1.setMovieId("82011"); mMovieHomeItems.add(item1); MovieHomeItem item2 = new MovieHomeItem(); item2.setDesc("测试影评"); item2.setMovieId("82011"); mMovieHomeItems.add(item2); layout1 = (RelativeLayout) this.findViewById(R.id.item_layout1).findViewById(R.id.movie_item1); layout2 = (RelativeLayout) this.findViewById(R.id.item_layout1).findViewById(R.id.movie_item2); layout3 = (RelativeLayout) this.findViewById(R.id.item_layout1).findViewById(R.id.movie_item3); layout4 = (RelativeLayout) this.findViewById(R.id.item_layout2).findViewById(R.id.movie_item1); layout5 = (RelativeLayout) this.findViewById(R.id.item_layout2).findViewById(R.id.movie_item2); layout6 = (RelativeLayout) this.findViewById(R.id.item_layout2).findViewById(R.id.movie_item3); layout7 = (RelativeLayout) this.findViewById(R.id.item_layout3).findViewById(R.id.movie_item1); layout8 = (RelativeLayout) this.findViewById(R.id.item_layout3).findViewById(R.id.movie_item2); layout9 = (RelativeLayout) this.findViewById(R.id.item_layout3).findViewById(R.id.movie_item3); layout1.setOnClickListener(movieOnClickListener); layout2.setOnClickListener(movieOnClickListener); layout3.setOnClickListener(movieOnClickListener); layout4.setOnClickListener(movieOnClickListener); layout5.setOnClickListener(movieOnClickListener); layout6.setOnClickListener(movieOnClickListener); layout7.setOnClickListener(movieOnClickListener); layout8.setOnClickListener(movieOnClickListener); layout9.setOnClickListener(movieOnClickListener); mLayout1.setOnClickListener(movieOnClickListener); mLayout2.setOnClickListener(movieOnClickListener); adapterItemToLayout(layout1,mMovieHomeItems.get(0)); adapterItemToLayout(layout2,mMovieHomeItems.get(1)); adapterItemToLayout(layout3,mMovieHomeItems.get(2)); adapterItemToLayout(layout4,mMovieHomeItems.get(3)); adapterItemToLayout(layout5,mMovieHomeItems.get(4)); adapterItemToLayout(layout6,mMovieHomeItems.get(5)); adapterItemToLayout(layout7,mMovieHomeItems.get(6)); adapterItemToLayout(layout8,mMovieHomeItems.get(7)); adapterItemToLayout(layout9,mMovieHomeItems.get(8)); } public void adapterItemToLayout(RelativeLayout layout,MovieHomeItem item){ ImageView iv = (ImageView) layout.findViewById(R.id.movie_pic); layout.setTag(item.getMovieId()); if(item.getPicResId()!=0){ iv.setImageResource(item.getPicResId()); } TextView tv = (TextView) layout.findViewById(R.id.movie_desc); tv.setText(item.getDesc()); } }