김중헌 졸업논문 코드 API 5월 31일

Retired DISLab
김중헌 (토론 | 기여) 사용자의 2014년 5월 31일 (토) 16:26 버전
(비교) ← 이전 판 | 현재 판 (비교) | 다음 판 → (비교)
이동: 둘러보기, 찾기
  • ClassDiagram 5.31.jpg

사용자 정보를 등록하는 userDataRegistration(), 데이터베이스에서 정보를 가져오는 downloadUserList(), 블루투스를 끄고 키는 turnOn & Off Bluetooth()는 public으로 사용자가 보이도록 제공

UserManager.java

package gae.user.manager;
 
import java.io.IOException;
import java.util.ArrayList;
import java.util.EventObject;
import java.util.LinkedList;
import java.util.List;
 
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.util.EntityUtils;
 
import android.bluetooth.BluetoothAdapter;
import android.content.Context;
import android.os.AsyncTask;
import android.os.Bundle;
import android.telephony.TelephonyManager;
import android.util.Log;
import android.view.View;
import android.widget.AdapterView;
import android.widget.Toast;
 
import com.google.android.gms.gcm.GoogleCloudMessaging;
 
public class UserManager {
	EventObject event = null;
	private static UserManager um;
	private List<User> ul;
	public Context context;
	private int userCnt = 0;
	String REGI_ID = "";
	String SENDER_ID = "508815197180";
	private BluetoothAdapter myBluetoothAdapter;
 
 
	BluetoothAdapter bluetooth = BluetoothAdapter.getDefaultAdapter();
	String MACaddr = bluetooth.getAddress();
 
	private UserManager(Context context) {
		ul = new LinkedList<User>();
		this.context = context;
	}
 
	public static UserManager getUserManager(Context context) {
		if (um == null) {
			um = new UserManager(context);
		}
		return um;
	}
 
	private void addUser(String name, String number, String MACaddr, String regId) {
		ul.add(new User(name, number, MACaddr, regId));
		userCnt++;
	}
 
	public int noOfUsers() {
		return userCnt;
	}
 
	public boolean isUserEmpty() {
		return userCnt == 0;
	}
 
	/* thorws Exception OR try/catch 두 방법 중 뭐가 더 나은지 고민중! */
	// Receive User Data: return type is strList
	public synchronized void getUserList() {
 
		new Thread(new Runnable() {
 
			@Override
			public void run() {
				try {
					HttpClient client = new DefaultHttpClient();
					String getURL = "http://hunny123234.appspot.com";
					HttpGet get = new HttpGet(getURL);
					HttpResponse responseGet = client.execute(get);
					HttpEntity resEntityGet = responseGet.getEntity();
					if (resEntityGet != null) {
						// process result
						String temp = EntityUtils.toString(resEntityGet);
						String temp1 = temp;
 
						for (String line : temp1.split("\n")) {
							String[] split = line.split("&");
							getUserStringList(split);
 
						}
					}
				} catch (NullPointerException e) {
					e.printStackTrace();
				} catch (ClientProtocolException e) {
					e.printStackTrace();
				} catch (IOException e) {
					e.printStackTrace();
				} finally {
				}
			}
		}).start();
 
	}
 
	private String[] getUserStringList(String[] split) {
		for (int i = 0; i < split.length - 3; i += 4) {
			if (!UserManager.getUserManager(null).checkDuplicationByPhoneNumber(split[i + 1]))
				UserManager.getUserManager(null).addUser(split[i], split[i + 1], split[i + 2], split[i + 3]);
		}
		//getUserStringList();
		List<User> ul = UserManager.getUserManager(null).getList();
		String[] strList = new String[ul.size()];
		int i = 0;
		for (User u : ul) {
			strList[i] = u.toString();
			i++;
		}
		return strList;
	}
 
//	private String[] getUserStringList() {
//
//		List<User> ul = UserManager.getUserManager(null).getList();
//		String[] strList = new String[ul.size()];
//		int i = 0;
//		for (User u : ul) {
//			strList[i] = u.toString();
//			i++;
//		}
//		return strList;
//	}
 
	private boolean checkDuplicationByPhoneNumber(String phoneNumber) {
		for (User u : ul) {
			if (u.getNumber().equals(phoneNumber))
				return true;
		}
		return false;
	}
 
	private List<User> getList() {
		return ul;
	}
 
	/* getter */
	private User getUserFromMACaddr(String addr) {
		for (User u : ul) {
			if (u.getMACAddr().equals(addr)) {
				return u;
			} else {
				continue;
			}
 
		}
		return null;
	}
 
	public void turnOnBluetooth() {
 
		if (!myBluetoothAdapter.isEnabled()) {
 
			myBluetoothAdapter.enable();
 
			Toast.makeText(UserManager.getUserManager(null).context.getApplicationContext(), "Bluetooth turned on",
					Toast.LENGTH_LONG).show();
		} else {
			Toast.makeText(UserManager.getUserManager(null).context.getApplicationContext(), "Bluetooth is already on",
					Toast.LENGTH_LONG).show();
		}
	}
 
	public void turnOffBluetooth() {
		myBluetoothAdapter.disable();
 
		Toast.makeText(UserManager.getUserManager(null).context.getApplicationContext(), "Bluetooth turned off",
				Toast.LENGTH_LONG).show();
	}
 
 
	public void userDataRegistration(String name) {
		getRegId();
		String url = "http://hunny123234.appspot.com/sign";
		HttpClient http = new DefaultHttpClient();
 
		TelephonyManager phoneMgr = (TelephonyManager) UserManager
				.getUserManager(null).context.getApplicationContext()
				.getSystemService(Context.TELEPHONY_SERVICE);
		String number = phoneMgr.getLine1Number();
 
		BluetoothAdapter bluetooth = BluetoothAdapter.getDefaultAdapter();
		String MACaddr = bluetooth.getAddress();
 
		try {
			ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
 
			nameValuePairs.add(new BasicNameValuePair("name", name));
			nameValuePairs.add(new BasicNameValuePair("regId", REGI_ID));
			nameValuePairs.add(new BasicNameValuePair("number", number));
			nameValuePairs.add(new BasicNameValuePair("MACaddr", MACaddr));
 
			HttpPost httpPost = new HttpPost(url);
			UrlEncodedFormEntity entityRequest = new UrlEncodedFormEntity(
					nameValuePairs, "UTF-8");
 
			httpPost.setEntity(entityRequest);
 
			http.execute(httpPost);
		} catch (Exception e) {
			e.printStackTrace();
		}
 
	}
 
	private void getRegId() {
		new AsyncTask<Void, String, String>() {
			@Override
			protected String doInBackground(Void... params) {
 
				GoogleCloudMessaging gcm = GoogleCloudMessaging
						.getInstance(UserManager.getUserManager(null).context
								.getApplicationContext());
 
				try {
					REGI_ID = gcm.register(SENDER_ID);
					Log.d("REGISTRATION", REGI_ID);
				} catch (IOException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
					Log.e("REGISTRATION", e.toString());
				}
				gcm.close();
 
				return null;
			}
		}.execute(null, null, null);
	}
 
	public class getListViewItemMACaddr implements AdapterView.OnItemClickListener {
 
		ArrayList<String> items = null;
 
		public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
 
			Bundle extras = new Bundle();
			extras.putString("MACaddr", items.get(position));
			Log.d("MACsend", items.get(position));
 
			returnMACaddr(items.get(position));
 
		}
	}
	private String returnMACaddr(String MACaddr) {
		return MACaddr;
	}
 
	/* 클릭한 아이템의 mac주소를 가지고 있는지 확인 후 있다면 (이름/휴대폰번호) 리스트뷰에 띄워줌. 없다면 토스트 메시지 출력*/
	public String[] getSelectedUserStringList(String MACaddr) {
 
//		Intent intent = getIntent();
//		String mac = intent.getStringExtra("MACaddr");
		User selectedUser = UserManager.getUserManager(null).getUserFromMACaddr(MACaddr);
 
		//if there is user having MACaddr
		if (selectedUser != null) {
			String[] selectedUserList = new String[1];
			for (int i = 0; i < selectedUserList.length; i++) {
				selectedUserList[i] = selectedUser.toString();
			}
			return selectedUserList;
			//there is no user having MACaddr
		} else {
			Toast.makeText(UserManager.getUserManager(null).context, "No device in Datastore", Toast.LENGTH_SHORT).show();
 
		}
		return null;
	}
 
}

User.java

package gae.user.manager;
 
public class User {
	private String name;
	private String number;
	private String MACaddr;
	private String regId;
 
	protected User(String name, String number, String MACaddr, String regId) {
		this.name = name;
		this.number = number;
		this.MACaddr = MACaddr;
		this.regId = regId;
	}
 
	public String getName() {
		return name;
	}
 
	public String getNumber() {
		return number;
	}
 
	public String getMACAddr() {
		return MACaddr;
	}
 
	public String getRegId() {
		return regId;
	}
 
	@Override
	public String toString() {
		return getName() + "/" + getNumber();
	}
}
개인 도구
이름공간
변수
행위
둘러보기
구성원
연구
연구실
기타
도구모음
인쇄/내보내기