'분류 전체보기'에 해당되는 글 650건

  1. 2019.06.10 Dasung Paper Like Pro /HD 2019!!!
  2. 2019.05.28 beautifulsoup에서 링크만 빼는법
  3. 2019.05.28 시놀리지에서 vpn client 사용하는 방법
  4. 2019.05.21 python 글로벌 변수 메소드에서 사용방법
  5. 2019.05.21 파이썬에서 텔레그램 메세지 에코
  6. 2019.05.17 파이썬 simple json 파싱
  7. 2019.05.17 파이썬 web request
  8. 2016.10.24 UWP(윈도우 유니버설 응용 프로그램)
  9. 2016.10.04 Huying PC방 버전(2016.8~2016.9)
  10. 2016.05.03 [포트폴리오] POP Camera (2016.04~2016.04) 1주
  11. 2016.05.03 [포트폴리오] Photo AR (2016.4~2016.4) 2주
  12. 2016.03.18 [포트폴리오] Windows 10 Store Melon App(2015.10~2016.1)
  13. 2015.07.25 쓰레드(Thread) 정지하고 다시 시작하는법
  14. 2015.07.23 handler를 이용해 Thread UI 해결하기
  15. 2015.07.22 안드로이드 커스텀 이벤트 등록
  16. 2015.07.16 외부 라이브러리 jar 만들고 연동방법
  17. 2015.07.03 윈도우즈 스토어 앱에서 윈도우 버전 알기
  18. 2015.03.17 [포트폴리오] 오즈 디스플레이 치과 차트 프로그램
  19. 2015.03.12 영어 공부 사이트
  20. 2015.02.13 ScatterviewItem 뒤에 검은색 백그라운드 쉐도우 없애기
  21. 2014.12.11 [포트폴리오] 중국 Wanda 시네마 CMB
  22. 2014.12.11 [포트폴리오] 안드로이드용 TakeOut 2,0
  23. 2014.10.28 [android] kitcat 에서 refresh gallery 문제 (3)
  24. 2014.09.03 ADB 에러 - more than one device
  25. 2014.08.28 ImagePager SetCurrentItem으로 강제로 이동시 Smooth 하게 이동하기
  26. 2014.08.27 앱 종료 시점알기, 앱종료인지 아니면 Activity끼리 전환인지 구분
  27. 2014.08.21 안드로이드 InternalStrage에 파일저장할때 하위폴더를 만들어서 읽기
  28. 2014.08.19 이미지 RadioButton 다양한 해상도 지원하게 하기
  29. 2014.08.18 layout 가운데 정렬
  30. 2014.08.18 Action Bar 숨기기
분류없음2019.06.10 18:16

 

다성(Dasung)은 e-잉크 패널 사용한 13인치 모니터 ‘페이퍼라이크(Paperlike)’를 발매한다. 

 

e-잉크 디스플레이는 이미 수년 전부터 나와 있지만 실제 사용하는 분야는 전자책이나 시계 같은 휴대용 기기가 전부였다. 하지만 이 제품을 사용하면 눈부심 없는 e-페이퍼 보기가 가능하다. 

 

이 제품은 13인치 모니터로 기존 LCD 패널 대신 e-잉크 그레이스케일 패널을 탑재한다. 또한 USB 모니터로 데스크톱 PC나 노트북의 USB 포트에 꼽으면 간단하게 보조 모니터로 사용할 수 있다. 별도의 전원이 필요 없으며 USB로 전원을 공급받는다. 

 

 

e-잉크 피나(Fina) 스크린과 1,600×1,200(150ppi) 해상도의 유리 베이스 패널을 사용한다. 윈도우(Windows), 리눅스, OS X 등의 운영체제에서 사용할 수 있으며, 모니터 용도에 맞도록 속도와 주사율을 최적화했다. 이를 통해 긴 서류를 스크롤하거나 다른 브라우저 탭으로 이동해도 깜빡임을 크게 줄였다. 주사율을 더 높이는 디스플레이 모드를 제공하지만 이 모드는 기존 모니터와 매우 비슷한 디스플레이가 된다고 설명하고 있다. 

 

여기서 살수 있다

https://igg.me/at/paperlike-2019

Posted by 동동(이재동)
Phython2019.05.28 17:03

for a in soup.find_all('h6', {'class' : 'ellipsis'}):

    print(a.find('a').attrs['href'])

Posted by 동동(이재동)
Phython2019.05.28 15:54

정부에서 차단된 사이트를 웹크롤링 하기 위해서 사용했다..

 

일단 공개된 vpn을 이용

 

https://www.vpngate.net/en/

 

VPN Gate - Public Free VPN Cloud by Univ of Tsukuba, Japan

Follow @vpngate Free Access to World Knowledge Beyond Government's Firewall. Your IP: 27.0.238.117Your country: Korea Republic ofLet's change your IP address by using VPN Gate! Today: 3,263,597 connections, Cumulative: 5,606,897,919 connections, Traffic: 1

www.vpngate.net

 

openVpn을 이용해서 ovpn 파일을 얻는다.

 

그리고 공개된 아이디와 패스워드 vpn/vpn으로 시놀리지 

 

제어판 - 네트워크 - 일반- 고급설정에서 다중게이트 활성화를 하고

 

네트워크 인터페이스로 이동하여 vpn 프로 파일 생성후 아이디 패스워드를 입력하고 vpn 끊어지면 다시 접속을 체크 한다.

 

그리고 생성되면 오른쪽 버튼을 눌러서 연결되면 이제부터 차단된사이트를 이용할수 있다.

Posted by 동동(이재동)
Phython2019.05.21 12:34

 

글로벌 변수를 사용할려면  global을 메소드안에서 선언해 줘야 한다.

x = 10

 

def foo():

 global x

 x += 1

 print x

 

foo()

https://eli.thegreenplace.net/2011/05/15/understanding-unboundlocalerror-in-python

Posted by 동동(이재동)
Phython2019.05.21 12:01

from telegram.ext import Updater

from telegram.ext import CommandHandler

from telegram.ext import MessageHandler, Filters

 

 

def start(bot, update):

# Your bot will send this message when users first talk to it, or when they use the /start command

bot.sendMessage(chat_id=update.message.chat_id,

text="Hi. Send me any English text and I'll summarize it for you.")

 

def summarize(bot, update):

try:

# Get the text the user sent

text = update.message.text

bot.sendMessage(chat_id=update.message.chat_id,

text=text)

#print(text)

# Run it through the summarizer

except UnicodeEncodeError:

bot.sendMessage(chat_id=update.message.chat_id,

text="Sorry, but I can't summarise your text.")

 

updater = Updater(token=my_token)

dp = updater.dispatcher

 

summarize_handler = MessageHandler(Filters.text, summarize)

start_handler = CommandHandler('start', start)

 

dp.add_handler(summarize_handler)

dp.add_handler(start_handler)

 

dp.bot.sendMessage('사람 id',text="himan")

 

updater.start_polling(timeout=3,clean=True)

updater.idle()

 

Commandhander를 앞에 /나 @에 반응한다.

 

참고 :  https://blog.psangwoo.com/coding/2018/01/09/python-telegram-bot-3.html

 

Posted by 동동(이재동)
Phython2019.05.17 14:27

import json

 

x = json.loads("json string", object_hook=lambda d: namedtuple('X', d.keys())(*d.values()))

print(x.last_price)

Posted by 동동(이재동)
Phython2019.05.17 14:26

import requests

 

url = 'https://api.bitfinex.com/v1/pubticker/btcusd'

response = requests.get(url)

response.status_code

response.text

 

print(response.text)

 

 

Posted by 동동(이재동)
Windows10 App2016.10.24 15:20

8에서 10으로 바뀌면서 가장 크게 바뀐게 유니버설로 바뀐것이다.

이제, 윈도우 10, 유니버설 응용 프로그램 플랫폼의 이름은 범용 윈도우 플랫폼 (UWP)로 변경되었다. PC, 태블릿, 휴대 전화,로 Windows 스토어의 Windows 10 장치를 대상으로 현대 완전히 몰입 애플리케이션을 구축 할 수 있다.


개발은 HTML과 C# With Xaml로 개발 가능하다.


개발하기 위해서 필요한것

-비쥬얼 스튜디오

-개발자 모드 On

-앱개발자 등록


Posted by 동동(이재동)
포트폴리오2016.10.04 16:42

중국에서 사용되고 있는 Huying PC방 버전


-PC방에서 이용중인 사용자들을 볼수 있고 비슷한 게임을 즐기는 사람과 게임 정보 공유및 친구를 사귈수 있음

-핸드폰으로 WECHAT 정보를 입력하면 자동으로 프로그램에 QR코드와 정보가 업데이트 됨

-광고로 수입 낼수 있음

-게임방 음식 메뉴를 고를수 있으며 앱을 이용하여 쉽게 결제 가능



Posted by 동동(이재동)
포트폴리오2016.05.03 14:27

Photo AR을 만들고 난 뒤 라이브러리를 이용해서 레이아웃및 디자인 , 몇가지 기능 추가 및 삭제 해서 만든 프로그램


이미 Photo AR에서 여러가지 시행착오를 거쳤기에 재활용해서 금방 만들 수 있었다.











Posted by 동동(이재동)
포트폴리오2016.05.03 14:25

영화관이나 행사장 근처에서 사진찍으면 이메일로 보내주는 딱 그런 용도이다...


키오스크에 들어가는 프로그램으로


사용자가 캠으로 사진을 찍고 배경, 필터, 스티커 등을 마음대로 편집할 수 있는


프로그램 서버로부터 이미지 및 데이터를 미리 다운로드 하는 방식으로 유연하다


카메라 메모리 관리하는부분이 개인적으로 힘들었던 프로젝트였다.
















Posted by 동동(이재동)
포트폴리오2016.03.18 12:58

기존 윈도우 8, 8.1에서만 동작하던 멜론 앱을 10에서도 잘 작동하도록 수정하였다.


수정과정에서 기획변경 및 멜론 DJ 멜군 업그레이드 및 새로운 기능 설정창 추가 등등 여러가지를 업그레이드 하였다.


서버쪽 이슈등도 모두 대응 









Posted by 동동(이재동)
Android App2015.07.25 17:30

찾아볼 시간이 없어서 그냥 간단한 방법으로 하였다,


public void connect(String nullMsg) {

broadCastThread = new Thread(new Runnable() {

public void run() {

try {

while (!broadCastThread.interrupted()) {

//구현

}

} catch (Exception e) {

e.printStackTrace();

}

}

});


broadCastThread.start();


}

그리고 멈출때는 


if (broadCastThread != null && broadCastThread.isAlive()) {

broadCastThread.interrupt();


그리고 다시 시작할때는 어쩔수 없이 connect()메소드를 다시 호출한다. 그냥 전역 쓰레드를 다시 정의해서 스타트 돌리는 꼼수이다.


wait, nofify도 된다는데 안되서 조금더 조사를 해봐야 할듯~

Posted by 동동(이재동)
Android App2015.07.23 11:46

Handler mHandler = new Handler();


핸들러를 만들고

Thread 안에 이렇게 쓰면  UI를 변경할수 있다.

mHandler.post(new Runnable() {
public void run() {
mTV.setText(msg);
}
});

더 좋은 방법이 있지만 간단하게 사용할려면 이게 편한듯

참고 : http://blog.naver.com/slrkanjsepdi/90116465979


Posted by 동동(이재동)
TAG Handler, Thread, UI
Android App2015.07.22 11:37

일단 커스텀 이벤트 등록


public interface MessageEventListener {

void onMessageEventListener(String msg);


}


이벤트를 보내기 위한 리스너 생성  (예: bc라는 클래스라고 하자)


public MessageEventListener mMessageListener;


public void setOnMessageListener(MessageEventListener listener){

mMessageListener = listener;

}



이벤트 받을 클래스에 리스너 등록

bc.setOnMessageListener(new MessageEventListener(){


@Override

public void onMessageEventListener(String msg) {

// TODO Auto-generated method stub

Log.i("CustomEvent", "Event Message : "+msg);

}

});



bc라는 클래스에서 이벤트를 호출 

mMessageListener.onMessageEventListener(msg);




Posted by 동동(이재동)
Android App2015.07.16 13:34



1. 같은 워크스페이스에 안드로이드 빈프로젝트를 하나 만들고 src에 클래스 파일을 만든다.


2. libs에 > import > General > File System > jar가 위치한 폴더를 선택 > 원하는 jar 파일만 체크하여 추가.

  (폴더는 해당 bin에 자동으로 생성된 jar파일을 직접 선택)


3. 빌드패스에서  라이브러리 > Add JAR> lib폴더에 있는 jar 을 직접 선택


4. 메소드 실행후에  class 를 찾을수 없다는 메세지가 나오면 폴더 선택 버튼을 누르고 라이브러리 플더 자체를 선택한다.



Posted by 동동(이재동)
Windows10 App2015.07.03 10:58

윈도우 스토어앱에서는

 

그 흔한 Osversion 메소드를 지원하지 않는다 ㅡ.ㅡ;;;

 

system.environment.osversion

 

그래서 어떻게 해야 하나 찾아봤는데 역시 구글신이 해결해주었다.

 

 

핵심소스는 이부분이다.

 

 

public static async Task<string> GetWindowsVersionAsync()
{
// There is no good place to get this so we're going to use the most popular
// Microsoft driver version number from the device tree.
var requestedProperties = new[] { DeviceDriverVersionKey, DeviceDriverProviderKey };
var microsoftVersionedDevices = (await PnpObject.FindAllAsync(PnpObjectType.Device, requestedProperties, RootContainerQuery))
.Select(d => new { Provider = (string)d.Properties.GetValueOrDefault(DeviceDriverProviderKey),
Version = (string)d.Properties.GetValueOrDefault(DeviceDriverVersionKey) })
.Where(d => d.Provider == "Microsoft" && d.Version != null)
.ToList();
var versionNumbers = microsoftVersionedDevices
.GroupBy(d => d.Version.Substring(0, d.Version.IndexOf('.', d.Version.IndexOf('.') + 1)))
.OrderByDescending(d => d.Count())
.ToList();
var confidence = (versionNumbers[0].Count() * 100 / microsoftVersionedDevices.Count);
return versionNumbers.Count > 0 ? versionNumbers[0].Key : "";
}

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

참고 :  http://stackoverflow.com/questions/10125324/get-os-version-in-winrt-metro-app-c-sharp

Posted by 동동(이재동)
포트폴리오2015.03.17 14:26

치과 이미지 및 각종 문서를 테이블 PC에서 멋있는 UI로 보여주는 프로그램

 

실제 영국과 일본에서 많은 라이센스를 팔았다고 들음

 

 

 

 

 

 

 

 

 

Posted by 동동(이재동)
영어공부2015.03.12 11:23
http://www.wordbreak.net/  깜박이 영어같은 단어암기 사이트
http://babel.altavista.com/translate.dyn  번역 사이트
http://kr.babelfish.yahoo.com/translate_txt  번역 사이트
http://www.gohackers.com/html/eng_edu/eng_edu.htm?idx=12  해커스 영어 학습 사이트
http://www.urbandictionary.com/  영어 슬랭 사전
http://www.eoneo.com/lang/en/freezone/grammarChecker/  영어 문법 검사
http://translate.google.com/  구글 번역 사이트
http://www.sharedtalk.com/  외국인 친구 사귀는 곳
http://www.keybr.com/welcome  영타연습, 속도측정
http://www.merriam-webster.com  영영 사전
http://www.uiowa.edu/~acadtech/phonetics/english/frameset.html발음교정사이트
http://www.elllo.org  혼자 영어공부하기 좋은 사이트
http://lingual.net/  영화로 영어공부
http://www.breakingnewsenglish.com/  브레이킹뉴스잉글리쉬, 뉴스, 스크립트, 연습문제등
http://englishcube.net/  영어공부 할 수 있는 온갖 사이트 망라
http://www.interpals.net/  외국인 펜팔사이트
http://www.bbc.co.uk/worldservice/learningenglish/  비비씨 러닝 잉글리시
http://blog.naver.com/mstarcom1  영어공부, 미국생활 블로그
http://www.omegle.com  외국인과 채팅

 

'영어공부' 카테고리의 다른 글

영어 공부 사이트  (0) 2015.03.12
[site] 영어 채팅 에 빠져보자~  (0) 2009.06.15
영어 만화 사이트  (0) 2009.04.01
단어 공부하기 좋은 사이트^^  (0) 2009.03.18
homework in innotive (february, 23,2009)  (0) 2009.02.23
영어원서로 공부하자 영어  (0) 2008.12.30
Posted by 동동(이재동)
Surface2015.02.13 13:44
ScatterViewItem svi = new ScatterViewItem();
svi.Background = new SolidColorBrush(Colors.Transparent);
svi.ShowsActivationEffects = false;
svi.BorderBrush = System.Windows.Media.Brushes.Transparent;

RoutedEventHandler loadedEventHandler = null;
loadedEventHandler = new RoutedEventHandler(delegate
{
    svi.Loaded -= loadedEventHandler;
    Microsoft.Surface.Presentation.Generic.SurfaceShadowChrome ssc;
    ssc = svi.Template.FindName("shadow", svi) as Microsoft.Surface.Presentation.Generic.SurfaceShadowChrome;
    ssc.Visibility = Visibility.Hidden;
});
svi.Loaded += loadedEventHandler;

참고 : http://stackoverflow.com/questions/4602013/removing-shadow-from-scatterviewitem-isnt-working

Posted by 동동(이재동)
포트폴리오2014.12.11 11:55

중국 출장 3주간의 너무 힘든 일이였다.

 

개발환경도 힘들고 공사하는중에 개발을 해야해서 먼지도 많이 먹고 음식도 안맞고 잠도 힘들었다...

 

하루에 3시간 이상 잔적이 없는 엄청 힘들었던 프로젝트다.. 역시 중국 ㅠㅠ

 

모니터는 총 1920*1080 해상도로 왼쪽 4 중간 3 오른쪽 4 개로 총 11개의 모니터가 들어간다.

 

총 4개의 프로그램으로 나누어져 있는데

 

나는 이걸 cmba  ,cmb, cmbb 로 불렀다. 그리고 마지막 소켓 Server

 

젤 좌측에는 cms의 api로부터 대기오염정보난 공지사항 영화대사 , 음식 포스터 이미지등을 서버로부터 받아서 뿌려주며

애니메이션 된다.

 

가운데는

영화가 리스트가 보여지며 TimeTable 이 있어서 현재 시간에 맞게 영화가 보여지며 좌석수가 업데이트되고 타임테이블이

5분단위로 움직여서 항상 정해진 시간에 맞게 보여진다.

광고및 시간에 맞게 입장알림 기능이 있다.

 

오른쪽...이게 젤 힘들었던 부분인데

영화정보를 보여지는 부분인데 동영상 및 애니메이션이 너무 많이 들어가서 메모리 관리에 애를 먹었다.

사용한 애니메이션은 항상 지우고 새롭게 계속 추가 생성하는 형식으로 만들었으며

시간이 지난 영화는 삭제되고 좌석수는 5초 단위로 업데이트 되며 각종 영화정보및 영상이 나오고

광고및 입장알림 영화는 풀재생으로 된다.

 

이모든것을 컨트롤하는 소켓을 이용한 서버가 있으며

서버는 그냥 간단한 WPF ui로 만들었다.

 

현재 중국 완다 시네마에 정상적으로 작동중이다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Posted by 동동(이재동)
포트폴리오2014.12.11 11:43

개발언어 : 안드로이드

 

기존 TakeOut에 파일전송 기능이 파일 뷰어 기능을 추가한 버전이다.

 

테이블에서 색 패턴을 읽어서 핸드폰이랑 연동이 되어 이미지 및 각종 파일을 무선으로 전송할수 있고

 

파일 뷰어를 이용해 영구적으로 관리 할수 있고..

 

PDF, Image, pptx,xls 파일등을 클릭시 바로 확인 가능하다.

 

 

 

 

 

 

Posted by 동동(이재동)
Android App2014.10.28 14:12

기존 킷켓 이전에는

 

sendBroadcast(new Intent(Intent.ACTION_MEDIA_MOUNTED, Uri.parse("file://" + Environment.getExternalStorageDirectory())));

 

이렇게해서 겔러리를 갱신했었지만

 

킷캣부터 이렇게 바꼈다

private void galleryAddPic() {
    Intent mediaScanIntent = new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE);
    File f = new File(mCurrentPhotoPath);
    Uri contentUri = Uri.fromFile(f);
    mediaScanIntent.setData(contentUri);
    this.sendBroadcast(mediaScanIntent);
}

 

대신에 저 photoPath에 경로를 주는것이 아니라 업로드한 사진 경로 풀경로를 줘야 한다는것이다. 파일이름까지

 

참고 : http://www.codeproject.com/Questions/689342/Refresh-gallery-in-android-kitkat

Posted by 동동(이재동)
Android App2014.09.03 16:44

주로 이클립스에서 안드로이드 장치를 연결한 후 발생하는 에러.

 

실행 중에 운용하는 기기는 한 대 뿐인데 추가적으로 똑같은 기기가 더 출력되면서

 

정상적으로 실행이 안될때가 있다.

 

more than one device 또는 more than one device and emulator 에러 발생시

 

"cmd"에서 adb위치로 이동한다.

 

>> cd C:\Android\platform-tools

>> adb kill-server

>> adb start-server

Posted by 동동(이재동)
Android App2014.08.28 17:49
setCurrentItem(count,true);

 

마지막에 true는 스무스하게 움직이게 하는거다

 

는 무슨.... 작동이 안된다.

 

그래서  ViewPager를 상속받아서 새로 만들었다.

 

package com.example.redcarpetwall;

import java.lang.reflect.Field;

import android.content.Context;
import android.support.v4.view.ViewPager;
import android.util.AttributeSet;
import android.view.animation.DecelerateInterpolator;
import android.widget.Scroller;

public class ImageSlidePager extends ViewPager{
 
 public ImageSlidePager(Context context) {
        super(context);
    }

    public ImageSlidePager(Context context, AttributeSet attr) {
        super(context, attr);
        setMyScroller();
    }
   
   
  
    private void setMyScroller()
    {
      try
      {
              Class<?> viewpager = ViewPager.class;
              Field scroller = viewpager.getDeclaredField("mScroller");
              scroller.setAccessible(true);
              scroller.set(this, new MyScroller(getContext()));
      } catch (Exception e)
      {
          e.printStackTrace();
      }
    }
   
    public class MyScroller extends Scroller
    {
      public MyScroller(Context context)
      {
          super(context, new DecelerateInterpolator());
      }

      @Override
      public void startScroll(int startX, int startY, int dx, int dy, int duration)
      {
          super.startScroll(startX, startY, dx, dy, 1000 /*1 secs*/);
      }
    }
}

 

그러니 잘 작동한다.


이건 imageslide adapter

 

package com.example.redcarpetwall;

import android.R;
import android.app.Activity;
import android.content.res.AssetManager;
import android.os.Parcelable;
import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;
import android.view.View;
import android.view.ViewGroup.LayoutParams;
import android.widget.ImageView;
import android.widget.ImageView.ScaleType;

public class ViewPagerAdapter extends PagerAdapter {

 Activity activity;
 int imageArray[];

 public ViewPagerAdapter(Activity act, int[] imgArra) {
  imageArray = imgArra;
  activity = act;
 }

 public int getCount() {
  return imageArray.length;
 }

 public Object instantiateItem(View collection, int position) {
  ImageView view = new ImageView(activity);
//  view.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT,
//    LayoutParams.FILL_PARENT));
  view.setScaleType(ScaleType.FIT_XY);
  //view.setBackgroundResource(imageArray[position]);
  view.setImageResource(imageArray[position]);
  ((ViewPager) collection).addView(view, 0);
  return view;
 }

 @Override
 public void destroyItem(View arg0, int arg1, Object arg2) {
  ((ViewPager) arg0).removeView((View) arg2);
 }

 @Override
 public boolean isViewFromObject(View arg0, Object arg1) {
  return arg0 == ((View) arg1);
 }

 @Override
 public Parcelable saveState() {
  return null;
 }
}

 

이건 xml

<com.example.redcarpetwall.ImageSlidePager
     android:id="@+id/imageSlidePager1"
     android:layout_width="wrap_content"
     android:layout_height="wrap_content" >
 </com.example.redcarpetwall.ImageSlidePager>

 

 

귀찮아서 그냥 다 복불 ㅎㅎ

 

나중에 시간 되면 정리해야겠다.

 

참고한 사이트

이미지 슬라이드 : http://androidtrainningcenter.blogspot.kr/2012/10/viewpager-example-in-android.html


 

 

Posted by 동동(이재동)
Android App2014.08.27 11:48

 public static boolean isApplicationSentToBackground(final Context context) {
      ActivityManager am = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
      List<RunningTaskInfo> tasks = am.getRunningTasks(1);
      if (!tasks.isEmpty()) {
        ComponentName topActivity = tasks.get(0).topActivity;
        if (!topActivity.getPackageName().equals(context.getPackageName())) {
          return true;
        }
      }

      return false;
    }

 

onPause()를 오버라이드 해서

 

 

boolean temp = isApplicationSentToBackground(this);

 

사용하면 된다.

 

true일때는 사용자가  홈버튼을 눌렀을때 혹은 앱을 나갔을때

 

false일때는 나가지 않고 activity로 이동

Posted by 동동(이재동)
Android App2014.08.21 12:14

역시 삽질을 함으로써 실력이 느는건가...

 

구글링을 이틀동안 했다.... ㅠㅠ

 

일단 내가 원하는건

 

이미지 전송받아서 특정폴더에 저장을 하고 위부  이미지 프로그램을로 이미지를 읽는것이였다.

 

한폴더에 저장하는것이야 쉽다.

 

FileOutputStream os = openFileOutput(filename,
     Context.MODE_WORLD_READABLE);

 

 

new FileOutputStream 을 쓰지 못한 이유는 바로 저 !!!!! 권한문제 때문이다....

 

권한이 읽는권한이 있어야..(바로 그냥 CHMOD 쓰고 싶다~~~~~~~ㅠㅠ)

 

Intent를 이용해서 외부에서 이미지를 읽을수 가있다.

 

저게 날 엄청나게 괴롭혔다..

 

일단 openFileoutput은 인자로 String을 받는데 여기서 경로는 못받는다. 오로지 파일이름만 받을수 있다!!!!

 

그러면 이게

 

/data/data/앱이름/files 에 저장이 된다.

 

하지만 난 서브폴더를 만들고 싶었다.

 

/data/data/앱이름/files/서브폴더

 

혹시나 openFileoutput 에 경로를 지정할수 있을까 해서 찾아봤지만 택도 없는소리!!!

 

그렇다면 일단 files폴더에 받아서 copy하면 어떨까... 하... 역시 카피 하는것도 new FileOutputStream을 이용해서 그냥 복사하는거뿐.... ㅠㅠ 그래서 copy받은 파일은 권한이 없다

 

그렇다면 파일에 권한을 직접 줄수는 없을까?

 

file.setReadable(true, false);

 

이렇게 해도 안되길레 아 이건원래 안되나 싶었는데

 

지푸라기 잡는 심정으로

 

intent를 사용하기전에

new java.io.File(mItem.get(position).GetPath()).setReadable(true, false);

 

이런식으로 강제로 읽기 권한을 주니!!!

 

으악!!!!! 된다..

 

이제 더럽고 치사한 openFileoutput쓰지말고 당당하게 new FileoutputStream을 쓰고 나중에 권한 설정만 바꾸자.

 

참고로 폴더도 read되게 만들었다.

 

 File dir = getDir("Gallery", Context.MODE_WORLD_READABLE);
 dir.mkdir();

 

 

 

 

 

 

.

 

 

 

Posted by 동동(이재동)
Android App2014.08.19 16:17

역시 기초가 있어야 되는가보다.. ㅎㅎ

 

이미지 라디오 버튼이야 널린게 예제지만 다양한 해상도에 맞게 px를 디자이너랑 dp로 계산해 가며 적용하였는데

 

hdpi에서는 잘맞지만 xhdpi, xxhdpi에서는 이미지가 짤려나왔다....

 

결국 성공한것은 weight를 이용한 퍼센트로 맞추기였다...

 

라디오 그룹안에 2개의 라디오버튼 있는데

 

각각 weight를 0.5로 맞추니 dp로 맞출랑 달리 잘 맞았다.

 

대신 이미지도 dp로 맞추는게 아니라 각해상도에 따라서 맞춰야 한다.... 정확히 반으로 해상도 width가 1080임으로

 

이미지도 540으로 나누었다 그러니까 맞는게 아닌가....

 

아무튼 dp로 하지말고 퍼센트로 하자

 

Posted by 동동(이재동)
Android App2014.08.18 11:34

일단 가운데 정렬을 위해서는

 

FlameLayout 보다는 RelativeLayout을 사용하는것이 더 좋다....

 

xml에 이런식으로 사용하면 된다.

 android:layout_centerVertical="true"
 android:layout_centerHorizontal="true"  

 

wpf에서는 grid만 해두 충분했는데 크흑 ㅠㅠ

 

 

Posted by 동동(이재동)
Android App2014.08.18 11:10

@Override
 public void onCreate(Bundle savedInstanceState)
 { 
  super.onCreate(savedInstanceState);
  requestWindowFeature(Window.FEATURE_NO_TITLE);
  setContentView(R.layout.filelist_view);

 

이부분을 추가하면 된다.

  requestWindowFeature(Window.FEATURE_NO_TITLE);

 

ActionBar actionbar = getActionBar()를 할경우 액션바를 지원하지 않는 이전버전에는 오류가 발생하기도 하고 컴파일이 안된다.

 

그래서 위방법으로 하자

 

스타일로 하는 방법도 있으나 저 위에 방법이 깔끔하다

 

참고 :   http://jystudynote.tistory.com/entry/Android%EC%95%A1%EC%85%98%EB%B0%94-%EC%97%86%EC%95%A0%EA%B8%B0

 

Posted by 동동(이재동)