프로젝트 진행 중 핸드폰 간의 NFC 통신을 이용하여 라즈베리파이 작동하는 영상 



Android-USB-Serial-Monitor_Lite-Master : Serial 통신 예제 프로젝트

PhysicaloidLibrary-master : 위 예제 프로젝트를 실행 할 때 사용하는 라이브러리


https://github.com/ksksue/PhysicaloidLibrary



Android-USB-Serial-Monitor-Lite-master.zip

PhysicaloidLibrary-master.zip


브로드캐스트 리시버 : 시스템이 방송한 정보를 수신할 수 있는 수신기


브로드캐스팅 시작하는 코드


 

1
2
3
4
Intent intent = new Intent();
intent.setAction("com.test.Broadcasting.action.FILE_DOWNLOADED");
intent.putExtra("FILE_NAME","broadcastTest.txt");
sendBroadcast(intent);
cs

1.인텐트 객체 생성

2.어떤 상황을 방송할 것인지 액션을 정함

3.내려받은 파일명을 엑스트라에 추가

4.방송


브로드캐스팅 리시버

정적 리시버 : 한번 등록시 해제할 수 없음 (AndroidManifest.xml 에서 설정)

AndroidManifest.xml에 추가

 

1
2
3
4
5
<receiver android:name="클래스이름">
    <intent-filter>
        <action android:name="com.test.Broadcasting.action.FILE_DOWNLOADED"/>
    </intent-filter>
</receiver>
cs

1. 동작을 처리할 클래스 이름

3. 리시버가 들을 액션


동작을 처리할 클래스는 BroadcastReceiveer를 상속받은 후 onReceive메소드를 오버라이딩하면 됨


동적 리시버 : 등록과 해제가 자유로움 (BroadcastReceiver 객체 생성)

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
BroadcastReceiver m_FileRecevier = null;
IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction("com.test.Broadcasting.action.FILE_DOWNLOADED");
 
m_FileRecevier = new BroadcastReceiver(){
    @Override
    public void onReceive(Context context, Intent intent){
    
    }
}
 
registerReceiver(m_FileReceiver,intentFilter);
 
unregisterReceiver(m_FileReceiver);
 
cs

 

1.브로드캐스트 리시버 객체 생성

2~3.인탠트 필터 객체 생성하여 액션 추가

5~10. 브로드캐스트 리시버에서 onReceive 오버라이딩

12. 브로드캐스트 리시버와 인탠트필터로 리시버 등록

14. 해제할 때 사용


개발환경 : API 21(Lolipop), Android Studio

해상도 : 480 * 800

첨부파일 : 해당게임 apk 파일

사용 기법 : 스레드, View 생성, static을 이용한 점수 저장


게임 실행 사진



app-debug (5).apk



http://developer.lge.com/Friends/resources/360-camera-sdk/overview/


DatagramSocket : 데이터를 보내려는 곳이나 받기위해 포트를 여는데 사용하는 클래스

 

  • receive(DatagramPacket) : 데이터가 수신 될 때까지 대기했다가 데이터를 보낸 IP, Port, 데이터 등을 DatagramPacket에 반환한다.
  • send(DatagramPacket) : DatagramPacket에 저장된 IP, Port, 데이터를 보내는 메소드

 

DatagramPacket : 데이터를 수신이나 송신을 할 때 사용하는 클래스

 

  • InetAddress getAddress() : IP주소를 반환
  • int getPort() : Port를 반환

 

서버 구현 예제

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.SocketException;
 
public class Main {
 
    public static void main(String[] args) {
        // WebAccessThread wat = new WebAccessThread();
        // wat.start();
        String strData = "Hello";
        DatagramSocket ds;
        try {
            ds = new DatagramSocket(8082);
            while (true) {
 
                System.out.println("포트 열기");
 
                byte[] buffer = new byte[100];
                DatagramPacket dp = new DatagramPacket(buffer, buffer.length);
                // 패킷 수신
                System.out.println("접속 대기");
                ds.receive(dp);
                InetAddress address = dp.getAddress();
                int port = dp.getPort();
                System.out.println("패킷 수신 완료 : [" + address + " : " + port + "]");
                // DatagramPacket dpo = new
                // DatagramPacket(wat.strData.getBytes(),
                // wat.strData.getBytes().length, address, port);
                DatagramPacket dpo = new DatagramPacket(strData.getBytes(), strData.getBytes().length, address, port);
                ds.send(dpo);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
 
cs

 


클라이언트

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.SocketException;
import java.net.UnknownHostException;
 
public class Main {
 
    public static void main(String[] args) {
        String strData = "Hello";
        while(true){
            System.out.println("서버 열기");
            
            InetAddress iAddress;
            try {
                DatagramSocket dSocket = new DatagramSocket();
                iAddress = InetAddress.getByName("noring.iptime.org");
                byte[] msg = new byte[100];
                DatagramPacket outPacket = new DatagramPacket(msg, 1,  iAddress, 9001);
                DatagramPacket inPacket = new DatagramPacket(msg, msg.length);
                dSocket.send(outPacket);
                dSocket.receive(inPacket);
                System.out.println("server에서 온 값 : " + new String(inPacket.getData()));
                Thread.sleep(10);
                dSocket.disconnect();
            } catch (UnknownHostException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (SocketException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (InterruptedException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            
        }
    }
 
}
 
cs



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
import java.io.*;
 
public class FileCopy {
 
    public static void main(String[] args) throws IOException {
        File input = new File("/Users/ghdrl95/Documents/input.txt");
        File output = new File("/Users/ghdrl95/Documents/output.txt");
        
        FileInputStream in = new FileInputStream(input);
        FileOutputStream out = new FileOutputStream(output);
        
        int cTemp;
        
        while((cTemp = in.read()) != -1){
            out.write(cTemp);
        }
    }
 
}
 
 
 
cs


FileCopy.zip


Horse1 : 말이 Thread를 이용하여 달리는 기본 프로젝트

HorsePart(1) : 말의 종류 3가지로 증가



Horse1.zip

HorsePart (1).zip









1
2
3
4
5
6
public class Box<T> {
    private T obj;
    public void set(T obj) {this.obj=obj;}
    public T get() {return obj;}
}
 
cs

 

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
 
import java.util.ArrayList;
import java.util.List;
 
 
public class GenericSample {
 
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        String strTemp;
        
        List list = new ArrayList();
        list.add("hello");
        list.add("hi");
        strTemp = (String)list.get(0);
        System.out.println(strTemp);
        strTemp = (String)list.get(1);
        System.out.println(strTemp);
        
        List<String> strList = new ArrayList();
        strList.add("hi");
        strTemp = strList.get(0);
        System.out.println(strTemp);
        
        
        Box<String> box = new Box<String>();
        box.set("test");
        strTemp = box.get();
        System.out.println(strTemp);
        
        Product<StringString> product1 = new Product<String,String>();
        product1.setKind("TV");
        product1.setModel("샘숭 TV");
        String tv= product1.getKind();
        String tvModel=product1.getModel();
        System.out.println(tv+"\n"+tvModel);
        
        Box<Integer> box1=Util.<Integer>boxing(100);
        int iValue = box1.get();
        System.out.println(iValue);
        
        boolean isTrue = Util.setData(100);
        
        Pair<Integer, String> p1 = new Pair<>(1,"신홍기");
        Pair<Integer, String> p2 = new Pair<>(2,"ghdrl95");
        
        boolean result1 = Util.<Integer,String>compare(p1, p2);
        System.out.println(result1);
    }
 
}
 
cs

 


 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
 
 
public class Pair<K,V> {
    private K key;
    private V value;
    
    public Pair(K key, V value)
    {
        this.key=key;
        this.value=value;
    }
    
    public void setKey(K key) {this.key=key;}
    public void setValue(V value) {this.value=value;}
    
    public K getKey(){return key;}
    public V getValue(){return value;}
}
 
cs


 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
 
public class Product<T, M> {
    private T kind;
    private M model;
    
    public void setKind(T kind) {this.kind=kind;}
    public void setModel(M model) {this.model=model;}
    
    public T getKind(){return kind;}
    public M getModel(){return model;}
}
 
 
 
cs


 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
 
 
public class Util {
    public static <T> Box<T> boxing(T t){  
        Box<T> box = new Box<T>();
        box.set(t);
        return box;
    }
    
    public static <T> boolean setData(T t){
        return true;
    }
    
    public static <K,V> boolean compare(Pair<K,V> p1, Pair<K,V> p2)
    {
        boolean keyCompare = p1.getKey().equals(p2.getKey());
        boolean valueCompare = p1.getValue().equals(p2.getValue());
        return keyCompare && valueCompare;
    }
}
 
cs

 


작동 동작 : 말 5마리와 사람 3명이 존재하고 사람이 먼저 말에 배팅을 한뒤 게임을 시작한다.

게임이 시작되면 콘솔창에 말이 달리게 된다.

1등 말에 배팅한 사람은 돈을 획득한다.


인코딩에 따라 문자가 깨질 수 있으므로 주의


HorseBetting.zip


+ Recent posts