-
Android 2017‧11‧29
입력폼 Edit Text에 수정 안되게 하기
안드로이드 만들 때 텍스트 입력 폼을 <Edit Text/>를 이용해서 만든다. 그런데 가끔 readonly, 즉 수정 불가의 입력칸을 만들고 그 곳에 어플에서 만들어진 값을 노출하고 싶을 때가 있다. res > layout > 해당.xml 파일을 열어서 Edit Text에 android:focusableInTouchMode="false" 를 추가해 준다. 아래는 예제이다. <EditText android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/deviceip" android:textSize="16dp" android:textStyle="bold" android:focusableInTouchMode="false"/>
-
Android 2017‧11‧14
안드로이드 프로젝트 안에 미디어 파일을 넣고 경로 불러오기
안드로이드 스튜디오에서 패키지에 미디어 파일들을 넣고 코드로 파일 경로 불러올 때가 있다. 일단 res 폴더안에 raw가 없을 건데 raw 폴더는 새로 만든다. https://www.google.co.kr/search?q=android+studio+create+raw+folder&dcr=0&source=lnms&tbm=isch&sa=X&ved=0ahUKEwi6hrvevb3XAhULI5QKHdHGC7oQ_AUICygC&biw=1508&bih=918 어렵지 않은 거라 구글링에도 참 많이 나온다. 그런 후에 raw 폴더에 마우스 오른쪽 누르면 Show in Explorer 있을 것이고 누르면 윈도우 탐색기가 열린다. 그 안에 미디어 파일들을 넣으면 안드로이드 스튜디오에서도 들어간게 보인다. […]
-
Android 2017‧11‧14
안드로이드 Socket.io 소켓통신 하기
서버쪽이 이미 구성되어 있다는 가정으로 정리한 코드이다. 일단 안드로이드 스튜디오에서 socket.io 를 추가한다. 모듈로 추가하는 방법은 http://bongsunga.com/blog/3640 여기에 써 놓았다. 그럼 본격적으로 코드를 작성한다. AndroidManifest.xml 안에 <manifest> 안에 아래 코드를 넣어준다. <uses-permission android:name="android.permission.INTERNET" /> 아래 코드들을 MainActivity.java 에 작성하는 코드이다. 상단에 임포트 코드를 넣어준다. import com.github.nkzawa.emitter.Emitter; import com.github.nkzawa.socketio.client.IO; import com.github.nkzawa.socketio.client.Socket; 그런 후에 public class MainActivity extends […]
-
Android 2017‧11‧14
내부 저장소 파일 경로 사용하기
스마트폰을 PC에 연결하여 윈도우 탐색기에서 스마트폰의 내부 저장소에 파일을 넣어두고, 어플리케이션에서 해당 파일을 재생하거나 불러올 때 내부 저장소 경로는 아래와 같이 불러온다. Uri video = Uri.parse(Environment.getExternalStorageDirectory() + "파일명"); 혹은 폴더안에 넣어놓아서 폴더안의 영상을 불러오려면 아래 예제처럼 불러와도 된다. Uri video = Uri.parse(Environment.getExternalStorageDirectory() + "/DCIM/intro.mp4"); 안드로이드 업데이트 이 후로 위 코드만으로 제대로 불러와지지 않으면 아래 포스팅을 […]
-
Android 2017‧11‧08
SurfaceView를 이용한 비디오 플레이어 만들기 코드
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context=".MainActivity" > <SurfaceView android:id="@+id/surfaceView1" android:layout_width="wrap_content" android:layout_height="wrap_content" /> </LinearLayout> In the MainAcitivity class, in the onCreate method, you write code to create a reference to SurfaceView, get the surface holder, add Callback interface to the holder, and create MediaPlayer instance. In the onSurfaceCreate method (you need […]
-
Android 2017‧11‧08
음악 플레이 리스트 만들기 (MediaPlayer)
배열에 음악 파일을 add를 통해서 넣고 리스트를 만든다. 아래 코드는 stackoverflow에 있는 해당 코드를 그대로 가져왔다. 코드를 참고해서 만들면 될 듯 하다. import android.media.MediaPlayer; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.view.Menu; import android.view.MenuItem; import java.util.ArrayList; import java.util.Timer; import java.util.TimerTask; public class MainActivity extends AppCompatActivity { Timer timer; MediaPlayer mp; ArrayList<Integer> playlist; int i=0; @Override protected void […]
-
Android 2017‧11‧08
surfaceHolder.addCallback(this); 에 this 안 먹힐 때
아마 미디어 파일 중에 동영상을 띄우려고 surfaceView를 쓰는 경우에 surfaceHolder.addCallback(this); 이 코드를 넣어서 만드는 경우가 있을 것이다. 이 때 this가 오류가 나고 마우스를 올리면 오류 내용에 'addCallback (android.view.SurfaceHolder.Callback) in SurfaceHolder cannot be applied to~~~~' 라고 써있을 것이다. 코드 중에 mainActivity 를 감싼 부분을 찾아서 implements SurfaceHolder.Callback 을 뒤에 써준다. public class MainActivity extends AppCompatActivity implements SurfaceHolder.Callback { 이렇게 […]
-
Android 2017‧11‧08
안드로이드 스튜디오에 모듈,라이브러리 추가하기
soket.io 와 같은 라이브러리 추가할 때 com.github.nkzawa:socket.io-client:0.3.0 이렇게 제공하는데 이를 안드로이드 스튜디오에서 추가할 때는 File -> Project Structure 클릭하면 Project Structure 창이 뜬다. 위에 이미지를 참고해서 왼쪽에 App 클릭 -> Dependencies 탭 선택 -> 우측에 + 버튼에 com.github.nkzawa:socket.io-client:0.3.0 를 붙여넣기 해주면 된다.
-
Android 2017‧11‧07
오브젝트값을 문자열로 변환하여 변수에 담기
String textValue = String.valueOf(Object); 가끔 전달 받은 값이 Object 형식이라 swich case를 사용할 때 텍스트로 바꿔서 구분하려고 이용하는 편이다.