정소현 졸업논문 코드 6월 3일 - 등록 및 전송부분
Retired DISLab
BasicInfo.java
가장 기본이 되는 필요한 정보들을 저장하는 클래스
package gcm.remote.message; public class BasicInfo { public static final String SENDER_ID = "508815197180"; public static String REGI_ID = ""; //id1, id2는 시연을 위해 registration id를 직접 입력함 public static String id1 = "APA91bHxsC2vhfJirwC2LTxPV7FBoNIV7NrdKAP2TqW3ra0RsZ1SAO-z3PAAcng6QE_7yGwWgMx9JLz8Zts3Zd5YLOaunlMfcq9k_7wu9fthI7Cp4GG6agg_S9aCvIcY0-BXNxl-zoYEWeH77Ojh_vtMFCSj92W5Jg"; public static String id2 = "APA91bGq0ycbxx948jZYp5MQnVwCZ-qX2mdm5F4lZNdkGbWRBrriCcFTdEq32h-titBEJlb53IprP0959CuZhe6NswjRlewILfW4o3O43E7ysBAlkQxKTVKsW4IBs46_RxSkrxP6y0dglZZvgJth0V0V2ZjMiYyOYA"; }
MainActivity.java
GCM 서버에 기기를 등록하고 registration id를 발급받는 부분 REGISTER 버튼을 누르면 Sending 클래스로 넘어감
package gcm.remote.message; import static gcm.remote.message.BasicInfo.REGI_ID; import static gcm.remote.message.BasicInfo.SENDER_ID; import java.io.IOException; import android.app.Activity; import android.content.Intent; import android.os.AsyncTask; import android.os.Bundle; import android.util.Log; import android.view.View; import android.widget.Button; import com.google.android.gms.gcm.GoogleCloudMessaging; public class MainActivity extends Activity { public static final String TAG = "REGISTRATION"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); register(); Button registerBtn = (Button) findViewById(R.id.registerBtn); registerBtn.setOnClickListener(new Button.OnClickListener() { public void onClick(View v) { Intent intent = new Intent(MainActivity.this, Sending.class); startActivity(intent); } }); } protected void onDestroy() { super.onDestroy(); } void register() { new AsyncTask<Void, String, String>() { @Override protected String doInBackground(Void... params) { GoogleCloudMessaging gcm = GoogleCloudMessaging .getInstance(getApplicationContext()); try { REGI_ID = gcm.register(SENDER_ID); Log.d(TAG, REGI_ID); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); Log.e(TAG, e.toString()); } gcm.close(); return null; } }.execute(null, null, null); } }
Sending.java
버튼을 누르면 인텐트를 전송하는 클래스 텍스트, 웹, 음악, 동영상, 무음, 지도 등 6가지 기능 구현
package gcm.remote.message; import static gcm.remote.message.BasicInfo.id1; import static gcm.remote.message.BasicInfo.id2; import gcm.remote.intent.RemoteContext; import gcm.remote.intent.RemoteIntent; import java.util.ArrayList; import java.util.List; import android.app.Activity; import android.content.ComponentName; import android.content.Context; import android.content.Intent; import android.location.Location; import android.location.LocationManager; import android.net.Uri; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.EditText; public class Sending extends Activity { private Button msgBtn, urlBtn, musicBtn, quietBtn, videoBtn, mapBtn; private EditText msgEt, urlEt, musicEt, videoEt, timeEt; List<String> users = null; String musicPath = "file:///sdcard/Music/"; String videoPath = "file:///sdcard/Movies/"; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.sending2); users = new ArrayList<String>(); users.add(id1); users.add(id2); msgBtn = (Button) findViewById(R.id.msgBtn); msgBtn.setOnClickListener(new Button.OnClickListener() { @Override public void onClick(View v) { sendMessage(); msgEt.setText(""); } }); urlBtn = (Button) findViewById(R.id.urlBtn); urlBtn.setOnClickListener(new Button.OnClickListener() { @Override public void onClick(View v) { startInternet(); urlEt.setText(""); } }); musicBtn = (Button) findViewById(R.id.musicBtn); musicBtn.setOnClickListener(new Button.OnClickListener() { @Override public void onClick(View v) { playMusic(); musicEt.setText(""); } }); videoBtn = (Button) findViewById(R.id.videoBtn); videoBtn.setOnClickListener(new Button.OnClickListener() { @Override public void onClick(View v) { //playVideo(); videoTest(); videoEt.setText(""); timeEt.setText(""); } }); quietBtn = (Button) findViewById(R.id.quietBtn); quietBtn.setOnClickListener(new Button.OnClickListener() { @Override public void onClick(View v) { beQuiet(); } }); mapBtn = (Button) findViewById(R.id.mapBtn); mapBtn.setOnClickListener(new Button.OnClickListener() { @Override public void onClick(View v) { showMap(); } }); } void sendMessage() { msgEt = (EditText) findViewById(R.id.msgEt); String msg = msgEt.getText().toString(); // Intent intent = new Intent(); // intent.putExtra("msg", msg); ComponentName compName = new ComponentName("com.example.intenttest", "com.example.intenttest.TextActivity"); Intent intent = new Intent(Intent.ACTION_MAIN); intent.addCategory(Intent.CATEGORY_LAUNCHER); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); intent.putExtra("msg", msg); intent.setComponent(compName); // startActivity(intent); RemoteIntent remoteIntent = new RemoteIntent(users, intent); RemoteContext remoteContext = RemoteContext.getContext(); remoteContext.sendBroadcast(remoteIntent); } void startInternet() { urlEt = (EditText) findViewById(R.id.urlEt); String url = urlEt.getText().toString(); url = "http://" + url; Intent intent = new Intent(); intent.setAction(Intent.ACTION_VIEW); intent.setData(Uri.parse(url)); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); RemoteIntent remoteIntent = new RemoteIntent(users, intent); RemoteContext remoteContext = new RemoteContext(); remoteContext.sendBroadcast(remoteIntent); } void playMusic() { musicEt = (EditText) findViewById(R.id.musicEt); String music = musicEt.getText().toString(); music = music + ".mp3"; Intent intent = new Intent(); intent.setAction(Intent.ACTION_VIEW); Uri uri = Uri.parse(musicPath + music); intent.setDataAndType(uri, "audio/*"); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); RemoteIntent remoteIntent = new RemoteIntent(users, intent); RemoteContext remoteContext = new RemoteContext(); remoteContext.sendBroadcast(remoteIntent); } void playVideo() { videoEt = (EditText) findViewById(R.id.videoEt); timeEt = (EditText) findViewById(R.id.timeEt); String video = videoEt.getText().toString(); video = video + ".mp4"; String time = timeEt.getText().toString(); Intent intent = new Intent(); intent.setAction(Intent.ACTION_VIEW); Uri uri = Uri.parse(videoPath + video); intent.setDataAndType(uri, "video/*"); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); if (!time.equals("")) { intent.putExtra("time", time); } RemoteIntent remoteIntent = new RemoteIntent(users, intent); RemoteContext remoteContext = new RemoteContext(); remoteContext.sendBroadcast(remoteIntent); } void videoTest() { videoEt = (EditText) findViewById(R.id.videoEt); timeEt = (EditText) findViewById(R.id.timeEt); String video = videoEt.getText().toString(); video = video + ".mp4"; String time = timeEt.getText().toString(); ComponentName compName = new ComponentName("com.example.intenttest", "com.example.intenttest.VideoActivity"); Intent intent = new Intent(Intent.ACTION_MAIN); intent.addCategory(Intent.CATEGORY_LAUNCHER); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); Uri uri = Uri.parse(videoPath + video); intent.setDataAndType(uri, "video/*"); intent.setComponent(compName); if (!time.equals("")) { intent.putExtra("time", time); } RemoteIntent remoteIntent = new RemoteIntent(users, intent); RemoteContext remoteContext = new RemoteContext(); remoteContext.sendBroadcast(remoteIntent); } void beQuiet() { Intent intent = new Intent(); intent.setAction("MUTE"); RemoteIntent remoteIntent = new RemoteIntent(users, intent); RemoteContext remoteContext = new RemoteContext(); remoteContext.sendBroadcast(remoteIntent); } void showMap() { Context context = getBaseContext(); LocationManager lm = (LocationManager) context .getSystemService(Context.LOCATION_SERVICE); Location location = lm .getLastKnownLocation(LocationManager.NETWORK_PROVIDER); double latitude = location.getLatitude(); double longitude = location.getLongitude(); Uri uri = Uri.parse("geo:" + latitude + "," + longitude); Intent intent = new Intent(android.content.Intent.ACTION_VIEW, uri); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); RemoteIntent remoteIntent = new RemoteIntent(users, intent); RemoteContext remoteContext = new RemoteContext(); remoteContext.sendBroadcast(remoteIntent); } }