package com.local.cinermt; import android.content.Context; import android.content.Intent; import android.content.SharedPreferences; import android.net.ConnectivityManager; import android.net.NetworkInfo; import android.os.Bundle; import android.os.Handler; import android.os.SystemClock; //import android.support.v7.app.AppCompatActivity; import android.app.Activity; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.view.View.OnClickListener; import android.widget.ImageButton; import android.widget.Toast; import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.InetAddress; //public class MainActivity extends Activity public class MainActivity extends Activity implements OnClickListener { String ip_addr; int sport, dport; String pin; private final String IP_ADDR = "127.0.0.1"; private final int DPORT = 23432; private final String MAGIC = "CAR"; private final String PIN = "cinelerra"; private final char VER = '\001', ZERO = '\000'; private SharedPreferences prefs; InetAddress in_adr; DatagramSocket socket; Handler hndr = new Handler(); class sender extends Thread implements Runnable { public String data; sender(String d) { data = d; } @Override public void run() { if( socket == null ) return; String buf = MAGIC + VER + pin + ZERO + data; try { DatagramPacket packet = new DatagramPacket(buf.getBytes(), buf.length(), in_adr, dport); socket.send(packet); } catch(Exception e) { return; } } } public void send(String data) { final Thread net = new sender(data); net.start(); } boolean has_network() { ConnectivityManager cmgr = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); NetworkInfo netinf = cmgr.getNetworkInfo(ConnectivityManager.TYPE_MOBILE); netinf = cmgr.getNetworkInfo(ConnectivityManager.TYPE_WIFI); if( netinf == null ) return false; if(!netinf.isAvailable()) return false; if(!netinf.isConnected()) return false; return true; } boolean create_socket() { if(socket != null) socket.close(); socket = null; int retry = 10; while( --retry >= 0 ) { sport = (int)(Math.random() * (65536-1024)) + 1024; try { in_adr = InetAddress.getAllByName(ip_addr)[0]; socket = new DatagramSocket(sport); socket.setBroadcast(true); } catch(Exception e) { SystemClock.sleep(100); continue; } break; } return retry >= 0; } void save_defaults() { SharedPreferences.Editor ed = prefs.edit(); ed.putString("IP_ADDR", ip_addr); ed.putString("PIN", pin); ed.putInt("PORT", dport); ed.commit(); } void load_defaults() { ip_addr = prefs.getString("IP_ADDR", IP_ADDR); pin = prefs.getString("PIN", PIN); dport = prefs.getInt("PORT", DPORT); } @Override protected void onCreate(Bundle b) { super.onCreate(b); setContentView(R.layout.activity_main); if( !has_network() ) { Toast.makeText(this, "Can't access wifi", Toast.LENGTH_LONG).show(); SystemClock.sleep(5000); finish(); } prefs = this.getSharedPreferences("CineRmt", 0); load_defaults(); Intent it = getIntent(); String s = it.getStringExtra("IP_ADDR"); if( s != null ) ip_addr = s; s = it.getStringExtra("PIN"); if( s != null ) pin = s; dport = it.getIntExtra("PORT", dport); if( dport < 1024 ) dport = DPORT; if( !create_socket() ) { Toast.makeText(this, "Can't access network", Toast.LENGTH_LONG).show(); SystemClock.sleep(5000); } ImageButton img = (ImageButton)findViewById(R.id.button0); img.setOnClickListener(this); img = (ImageButton)findViewById(R.id.button1); img.setOnClickListener(this); img = (ImageButton)findViewById(R.id.button2); img.setOnClickListener(this); img = (ImageButton)findViewById(R.id.button3); img.setOnClickListener(this); img = (ImageButton)findViewById(R.id.button4); img.setOnClickListener(this); img = (ImageButton)findViewById(R.id.button5); img.setOnClickListener(this); img = (ImageButton)findViewById(R.id.button6); img.setOnClickListener(this); img = (ImageButton)findViewById(R.id.button7); img.setOnClickListener(this); img = (ImageButton)findViewById(R.id.button8); img.setOnClickListener(this); img = (ImageButton)findViewById(R.id.button9); img.setOnClickListener(this); img = (ImageButton)findViewById(R.id.buttonA); img.setOnClickListener(this); img = (ImageButton)findViewById(R.id.buttonB); img.setOnClickListener(this); img = (ImageButton)findViewById(R.id.buttonC); img.setOnClickListener(this); img = (ImageButton)findViewById(R.id.buttonD); img.setOnClickListener(this); img = (ImageButton)findViewById(R.id.buttonE); img.setOnClickListener(this); img = (ImageButton)findViewById(R.id.buttonF); img.setOnClickListener(this); img = (ImageButton)findViewById(R.id.buttonDOT); img.setOnClickListener(this); img = (ImageButton)findViewById(R.id.buttonTV); img.setOnClickListener(this); img = (ImageButton)findViewById(R.id.quit); img.setOnClickListener(this); img = (ImageButton)findViewById(R.id.fast_lt); img.setOnClickListener(this); img = (ImageButton)findViewById(R.id.media_up); img.setOnClickListener(this); img = (ImageButton)findViewById(R.id.fast_rt); img.setOnClickListener(this); img = (ImageButton)findViewById(R.id.menu); img.setOnClickListener(this); img = (ImageButton)findViewById(R.id.media_lt); img.setOnClickListener(this); img = (ImageButton)findViewById(R.id.pause); img.setOnClickListener(this); img = (ImageButton)findViewById(R.id.media_rt); img.setOnClickListener(this); img = (ImageButton)findViewById(R.id.slow_lt); img.setOnClickListener(this); img = (ImageButton)findViewById(R.id.media_dn); img.setOnClickListener(this); img = (ImageButton)findViewById(R.id.slow_rt); img.setOnClickListener(this); img = (ImageButton)findViewById(R.id.full_scr); img.setOnClickListener(this); img = (ImageButton)findViewById(R.id.stop); img.setOnClickListener(this); img = (ImageButton)findViewById(R.id.play); img.setOnClickListener(this); img = (ImageButton)findViewById(R.id.rplay); img.setOnClickListener(this); img = (ImageButton)findViewById(R.id.vol_dn); img.setOnClickListener(this); img = (ImageButton)findViewById(R.id.vol_up); img.setOnClickListener(this); img = (ImageButton)findViewById(R.id.mute); img.setOnClickListener(this); img = (ImageButton)findViewById(R.id.ch_up); img.setOnClickListener(this); img = (ImageButton)findViewById(R.id.ch_dn); img.setOnClickListener(this); img = (ImageButton)findViewById(R.id.suspend); img.setOnClickListener(this); img = (ImageButton)findViewById(R.id.config); img.setOnClickListener(this); img = (ImageButton)findViewById(R.id.buttonCC); img.setOnClickListener(this); img = (ImageButton)findViewById(R.id.power); img.setOnClickListener(this); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.menu_main, menu); return true; } @Override public void onClick(View v) { if (v instanceof ImageButton) { int id = ((ImageButton)v).getId(); if (id == R.id.menu) { send("menu"); } else if (id == R.id.button0) { send("key 0"); } else if (id == R.id.button1) { send("key 1"); } else if (id == R.id.button2) { send("key 2"); } else if (id == R.id.button3) { send("key 3"); } else if (id == R.id.button4) { send("key 4"); } else if (id == R.id.button5) { send("key 5"); } else if (id == R.id.button6) { send("key 6"); } else if (id == R.id.button7) { send("key 7"); } else if (id == R.id.button8) { send("key 8"); } else if (id == R.id.button9) { send("key 9"); } else if (id == R.id.buttonA) { send("key A"); } else if (id == R.id.buttonB) { send("key B"); } else if (id == R.id.buttonC) { send("key C"); } else if (id == R.id.buttonD) { send("key D"); } else if (id == R.id.buttonE) { send("key E"); } else if (id == R.id.buttonF) { send("book"); } else if (id == R.id.rplay) { send("rplay"); } else if (id == R.id.stop) { send("stop"); } else if (id == R.id.play) { send("play"); } else if (id == R.id.media_lt) { send("media_lt"); } else if (id == R.id.media_rt) { send("media_rt"); } else if (id == R.id.media_up) { send("media_up"); } else if (id == R.id.media_dn) { send("media_dn"); } else if (id == R.id.pause) { send("pause"); } else if (id == R.id.slow_lt) { send("slow_lt"); } else if (id == R.id.slow_rt) { send("slow_rt"); } else if (id == R.id.fast_lt) { send("fast_lt"); } else if (id == R.id.fast_rt) { send("fast_rt"); } else if (id == R.id.full_scr) { send("fscrn"); } else if (id == R.id.mute) { send("mute"); } else if (id == R.id.vol_up) { send("vol_up"); } else if (id == R.id.vol_dn) { send("vol_dn"); } else if (id == R.id.ch_up) { send("ch_up"); } else if (id == R.id.ch_dn) { send("ch_dn"); } else if (id == R.id.buttonDOT) { send("key dot"); } else if (id == R.id.buttonCC) { send("key cc"); } else if (id == R.id.buttonTV) { send("key tv"); } else { save_defaults(); if (id == R.id.config) { Intent it = new Intent(this, ConfigActivity.class); it.putExtra("IP_ADDR", ip_addr); it.putExtra("PIN", pin); it.putExtra("PORT", dport); startActivity(it); } else if (id == R.id.quit) send("hand"); else if (id == R.id.suspend) send("suspend"); else if (id == R.id.power) send("power"); else { Toast.makeText(this, "unknown msg",Toast.LENGTH_SHORT).show(); return; } finish(); } } } @Override public boolean onOptionsItemSelected(MenuItem item) { super.onOptionsItemSelected(item); int id = item.getItemId(); if (id == R.id.menu_exit) { save_defaults(); finish(); return true; } return false; } @Override public void onPause() { super.onPause(); save_defaults(); } @Override public void onDestroy() { super.onDestroy(); save_defaults(); } }