Intro Surface, SurfaceHodler, EGLSurface, SurfaceView, GLSurfaceView, SurfaceTexture, TextureView, SurfaceFlinger에 대해 모든 개발자들이 알아야 하는 것 이 문서는 안드로이드의 “시스템 레벨” 그래픽 아키텍처의 필수 요소들과, 그것들 애플리케이션 프레임워크와 멀티미디어 시스템에 의해 어떻게 이용되는지를 설명한다. 만일 여러분이 왜 SurfaceView와 TextureView가 그들 각자의 방식으로 동작하는지, 또는 Surface와 EGLSurface가 어떻게 연동하는지가 궁금하다면 제대로 찾아온 것이다. 이 문서는 여러분이 안드로이드 디바이스와 애플리케이션 개발에 어느 정도 익숙하다고 가정한다. 하지만, 안드로이드 ..
집에 아이패드가 2개가 있음에도 불구하고 안드로이드 태블릿인 갤럭시 탭S7 LTE를 구매하였다. 처음에는 WiFi를 구매하려고 했으나 아기들과 외출하게 되면 와이파이 잡을 시간도 없어서 그냥 데이터 함께쓰기를 하기 위해서 LTE를 신청했고, 데이터 함께 쓰기 유심을 꽂았다. 여러 유투버나 리뷰어들이 극찬했던 대로 이번 갤럭시 탭S7은 정말 잘나온 물건이다. 쿠팡에서 구매했는데 색상이 블랙/실버중에서 실버가 재고가 있어서 구매했다. 갤럭시 탭S7의 장점을 정리하면 다음과 같다. - 11인치 화면에 S7+는 AMOLED인데 비해 LCD라서 번인 걱정이 없음 - 화면이 16:10 비율임. 영상볼때 정말 좋음 - 120Hz 주사율이 지원이 됨 - 아이패드에 비해서 펜이 내장되어 있으며 펜 성능이 아이패드와 비슷..
이전에 올렸던 글에서는 썸네일을 직접 생성하는 방법에 관한 이야기이고 https://duongame.tistory.com/334 이번에는 Android 시스템에서 미리 추출해둔 동영상을 획득하는 방법을 알아보자. 어떤 예제에서는 MediaStore.Video.Media._ID, MediaStore.Video.Media.DISPLAY_NAME 을 사용하는 것이 있는데 이것은 현재 동작하지 않는다. 아래와 같이 MediaStore.Video.VideoColumns을 사용해야 한다. String[] proj = { MediaStore.Video.VideoColumns._ID, }; Cursor cursor = context.getContentResolver().query( MediaStore.Video.Med..
안드로이드에서 Google Drive API를 사용하는 예제이다.구글에서 제공하는 예제넌 quick-start로서 해당 앱의 정보만 업로드하는 기능이고, 사용자의 전체 구글 드라이브의 정보를 리스팅하고 받아오지는 못한다.우리는 사용자가 기존에 저장해 두었던 정보를 리스팅해 볼것이다. 아래의 페이지에서 사용할 package name과 keystore의 sha-1 키를 등록하자.https://developers.google.com/drive/android/get-started 그리고 다음과 같이 소스코드를 구현한다. 단 package name은 위에서 등록한 package name이어야 한다.public class MainActivity extends AppCompatActivity { private sta..
var request = require('request'); // 둘다 사용가능 //var url = 'https://gcm-http.googleapis.com/gcm/send';var url = 'https://android.googleapis.com/gcm/send'; var apikey = 'AIzaSyAIwJr4nbF7jcDu9DUt4OdyTB_vEW3j???'; // project server key 1 (OK)var regId='cTUTljnS8XQ:APA91bF-Cv2MWOXHWF2nTBR8UdyxSMcWw6CJceEb7dVEj1r9MaevYbExzPkXDZLUDYuIJKXk-N83BN9x6yt6ZXEFGRJNEh7OW6qm4mw4jx-O9khNevsnPL71cOsiedqWdYmnux_rp?..
안드로이드 8.0에서는 제약사항으로 인해 notification channel을 생성하여야만 notification을 보낼수가 있다.아래는 channel 생성 예제이다. class MainActivity : AppCompatActivity() { private fun createChannel() { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { val notificationManager = getSystemService(Context.NOTIFICATION_SERVICE) as android.app.NotificationManager val channelMessage = NotificationChannel("channel_id", "channel_name..
안드로이드에서 쓰레드 루프 중에 쓰레드를 멈추고 Modal Dialog를 받는 방법을 예제로 만들어 보았다. 동기화에 사용되는 오브젝트는 Object lock으로 wait/notify를 사용하였다. package com.example.a1000149.androidthreadtest; import android.content.DialogInterface;import android.support.v7.app.AlertDialog;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.util.Log;import android.view.KeyEvent;import android.view.View;import ..
- Total
- Today
- Yesterday