top drop menu

Recent Post

레이블이 안드로이드인 게시물을 표시합니다. 모든 게시물 표시
레이블이 안드로이드인 게시물을 표시합니다. 모든 게시물 표시

일요일, 11월 18

뷰잉 팁–특정 앱(넷플릭스)이 말썽을 부릴때…

사용을 하다 보니 넷플릭스가 간혹 갑자기 꺼지거나 다시 앱을 실행해도 금방 다시 종료 되는 현상이 발생했다. 다른 앱들은 멀쩌안것으로 봐서 이 넷플릭스 앱이 문제인듯 보인다. 이럴때 앱을 초기화 하고 다시 시작하는 방법에 대해 알아 보자.


뷰잉 > 설정 > 기기설정 > 설정 > 앱 > 넷플릭스 을 선택하여 ‘테이터 삭제’를 선택한다. 데이터를 삭제하면 앱에 설정되어 있던 로그인 정보등이 모두 삭제 되니 다시 로그인을 해줘야 한다.  좀 더 확실하기 위해 뷰잉도 재시작 해주자. 뷰잉을 재시작 하는 방법은 전원키를 꾹 3초 정도 누르고 있으면 다시시작 팝업창이 뜬다. 선택해주면 뷰잉이 재시작 된다.

재시작 후 다시 넷플릭스를 실행해 주면 된다. 다른 앱도 말썽을 부리면 이런식으로 해주거나 앱을 재설치 하는 방법도 생각해 보면 될듯 하다.

팁은 간단해야지…^^

일요일, 11월 11

Node.js(4) 안드로이드와 Socket.io로 통신하기

이번에는 Socket.io를 이용해서 안드로이드와 소켓통신을 해보기로 하자. 먼저 Node.js로 서버를 가동하자. 여기서 express라는 것을 이용할텐데 이 express는 Node.js에서 동작하는 웹 개발 프레임워크이다. 한마디로 편하게 웹서버를 가동하고 개발할 수있도록 해주는 것이니 이용하기로 하자. 편한길로 가야지. express(이것도 뭔가 복잡한데 다음에 알아 보자.)를 사용하기 위해서 먼저 설치를 해줘야 한다. 그리고 socket.io도 설치하자.

npm install express

npm install socket.io

이제 서버코드를 작성하자.

var app = require('express')();
var http = require('http').Server(app);
var io = require('socket.io')(http);

app.get('/', function(req, res){
   res.sendfile('index.html');//default page
});

http.listen(3000, function(){
   console.log('listening on *:3000');
});

io.sockets.on('connection', function (socket){
   //원격에서 접속이 되면 기본 응답
   socket.emit('message_from_server', 'hello, world');

  //메세지가 들어 오면 응답
   socket.on('message_from_client', function (msg){
     console.log('message:', msg);
     /*받은 메세지를 되돌려 주자.
     아니면 받은 데이터를 이용 라즈베리파에서 뭐든 할 수 있다.
     */
     socket.emit('message_from_server', '"' +msg+ '" 라고하셨군요.');
   });

});

간단히 소켓으로 받은 데이터를 되돌려 전송하는 코드이다.  실행해 두자.

node server.js

이제 원격 자바스크리트로 클라이언트를 만들자.

이미지 103

텍스트를 입력하고 전송하면 서버에서 그 값을 되돌려 받아서 화면에 출력하게 된다. 라이브러리를 추가해 줘야 하는데 아래 사이트에서 복사해 넣자.

https://cdnjs.com/libraries/socket.io


<!DOCTYPE html>
<html>
<head>
     <meta charset="utf-8">
     <title>Socket.io example</title>
     <style type="text/css">
         body{
             text-align: center;
         }
         #response{
             color: red;
         }
     </style>
</head>
<script type="text/javascript" src="
https://cdnjs.cloudflare.com/ajax/libs/socket.io/2.1.1/socket.io.dev.js"></script>
<body>

    <h1>Socket.io example</h1>

    <form action="javascript:void(0);">
             <input type="text" id="inputMsg" required>
             <button onclick="sendsocket()">보내기</button>
     </form>

    <p>서버로부터 응답: </p>
     <div id="response"></div>

    <script type="text/javascript">
         var socket = io.connect("192.168.0.4:3000");
         var res = document.querySelector("#response");
         var msg = document.querySelector("#inputMsg");

        socket.on('message_from_server', function(data){
             console.log(data);
             res.innerHTML = "<p>"+data+"</p>";
         });

        function sendsocket(){
             socket.emit('message_from_client', inputMsg.value);
         }
     </script>

</body>
</html>


웹브라우저에서 접속해서 간단히 보내 보면 … 잘 된다. 끝! 이제 안드로이드앱에서 데이터를 보내 보자. 서버는 특별히 손댈 필요가 없으니 그대로 두자.

Screenshot_20181112-160446


마찬가지로 간단히 텍스트를 입력해서 전송하는 앱이다. 서버에서 보내온 응답 메세지를 화면에 출력해 준다. layout 파일은 생략하고 자바코드만 보자.

public class MainActivity extends AppCompatActivity {

Socket socket;
Button button;
EditText editText;
TextView textView;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

try {
socket = IO.socket("http://192.168.0.4:3000");
}catch (Exception e) {
e.printStackTrace();
}

socket.on(Socket.EVENT_CONNECT, new Emitter.Listener() {
@Override
public void call(Object... args) {
socket.emit("message_from_client", "Hi~ 나는 안드로이드야.");
}
}).on("message_from_server", new Emitter.Listener() {
@Override
public void call(final Object... args) {
runOnUiThread(new Runnable() {
@Override
public void run() {
textView.setText(args[0].toString());
}
});
}
});
socket.connect();

editText = (EditText) findViewById(R.id.editText);
textView = (TextView) findViewById(R.id.result);
button = (Button) findViewById(R.id.button);

button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
String msg = editText.getText().toString();
socket.emit("message_from_client", msg);
}
});
}
}

문제 없이 동작한다. 이렇게 해서 Node.js로 소켓통신을 위한 서버를 만들고 자바스크립트와 안드로이드에서 통신을 해보는 예제를 만들어 보았다.

목요일, 11월 8

뷰잉 안드로이드 TV - ES 파일 탐색기앱을 이용한 파일전송

좀 복잡해 보여서 사용안할려고 했더니 역시 이름값을 한다. 앞서 소개한 파일매니저 앱보다 기능도 더 많고 랜네트워크 디바이스도 잘 연결이 된다.

es01es02

구글 플레이에서 ES 파일 탐색기를 설치해 주자.

es03

홈 화면이다. 다양한 미디어들은 쉽게 검색할 수 있도록 되어 있다.

es08

네트워크 메뉴에 다양한 방식으로 같은 네트워크에 있는 디바이스들과 연결을 할 수 있다. 라즈베리파이로 만들어 놓은 NAS도 잘 연결이 된다. PC와의 연결은 유료구입을 ㅐ야 되는듯 잠겨있다. 굳이 필요 없으니 이건 넘어가고 다른 방법이 있다.

es04

원격관리메뉴나 Pc에선전송 아이콘을 눌러 들어가서 ftp 서버를 가동해 주면 PC나 다른 디바이스에서 ftp 접속이 가능해 진다. PC엣 파일질라 같은 ftp프로그램으로 접속해 주면 된다. 이게 되면 파일 전송은 식은 죽먹기지 뭐…

스마트폰에서도 PC와 다를거 없이 ftp로 접속해 주면 된다. 같은 ES 탐색기를 설치하거나 다른 파일관리 앱이라도 상관이 없다. ftp접속하는 기능이 있는 앱이면 뷰잉에 접속이 가능해 진다.

역시 블루투스는 안된다. 파일 자주 옮길것도 아니고 이정도만 해도 충분해 보인다. 그외에도 여러가지 방법이 있으니 편안 방식으로 이용하면 될듯 하다.

월요일, 11월 5

ADB 주요 사용 명령어들


ADB(안드로이드 디버그 브리지)는 에뮬레이터 인스턴스나 연결된 안드로이드 기기와 통신할 수 있는 다목적 명령줄 도구이다. 이것을 이용해서 앱을 설치하고 디버깅을 하는등 다양한 기기기 작업을 쉽게 할 수 있다. 안드로이드 스튜디오를 설치하면 같이 들어 있어 패스환경설정만 해주면 편리하게 사용할 수 있다.
디바이스 연결
adb connect device_ip

서버 중지
adb kill-server
스크린 캡처
adb shell screencap -p /sdcard/sample.png
동영상 캡처
adb shell screenrecord /sdcard/sample.mp4
파일 가져오기
adb pull /sdcard/sample.png
파일 보내기
adb push file.png /sdcard
Blogger Widget