넷북에 Android x86 8.1 r2 를 설치했는데 "Bluetooth keeps stopping" 이 메시지가 계속해서 뜨더군요~

인터넷에서 해결 방법을 겨우 찾았네요~

터미널을 열어서 su 명령어를 실행한 다음에 "pm disable com.android.bluethooth" 를 실행하면 됩니다.

x86:/ su
x86:/ # pm disable com.android.bluetooth
Package com.android.bluetooth new state: disabled

위와 같이 하니깐 깔끔하게 해결이 되는군요~

구형 넷북에 안드로이드 OS를 설치했지만 느린건 여전하네요~

유튜브 머신으로 사용하던가 해야겠어요~~

 

블로그 이미지

영은파더♥

가상서버호스팅 VPS 리눅스 서버관리 윈도우 IT

,

안드로이드 폰마다 해상도가 달라서 그리드뷰에서 이미지가 다르게 나오는군요~

폰의 화면 해상도에 따라 각 셀의 이미지 폭을 계산하는 방법입니다.

	<GridView
	    xmlns:android="http://schemas.android.com/apk/res/android"
	    android:id="@+id/gridview"
	    android:layout_width="fill_parent"
	    android:layout_height="0dip"
	    android:layout_weight="1"
	    android:columnWidth="100dp"
	    android:numColumns="3"
	    android:verticalSpacing="10dp"
	    android:horizontalSpacing="10dp"
	    android:stretchMode="columnWidth"
	    android:gravity="center"
	    />

위의 android:numColumns 숫자로 Width 를 나누면 됩니다.

그리고 나누기 전에 horizontalSpacing 이 있으므로 그 값을 미리 빼서 나누어야 합니다.

mGridView = (GridView)findViewById(R.id.gridview);
mCellSize = (this.getResources().getDisplayMetrics().widthPixels - mGridView.getRequestedHorizontalSpacing() ) / 3;

여기서 구한 mCellSize 를 mGridView.setAdapter 함수 호출시 값을 전달합니다.
mGridView.setAdapter(new ImageAdapter(getBaseContext(), thumbPath, mCellSize));

public class ImageAdapter extends BaseAdapter {
	private Context mContext;
	private int mCellSize = 0;

	public ImageAdapter(Context c, String[] thumbPath, int cellSize) {
		mContext = c;
		mCellSize = cellSize;
	}

	public Object getItem(int position) {
		return null;
	}
	
	public long getItemId(int position) {
		return 0;
	}
	
	public View getView(int position, View convertView, ViewGroup parent) {
		ImageView imageView;
		if(convertView == null) {
			imageView = new ImageView(mContext);
			imageView.setLayoutParams(new GridView.LayoutParams(mCellSize, mCellSize));
			imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
			imageView.setPadding(1, 1, 1, 1);
		}
		else {
			imageView = (ImageView)convertView;
		}
		
		imageView.setImageURI(Uri.parse(thumbPath[position]));
		
		return imageView;
	}
}

GridView에 자동으로 표시하는 옵션이 생기면 좋을텐데 아쉽군요~

 

블로그 이미지

영은파더♥

가상서버호스팅 VPS 리눅스 서버관리 윈도우 IT

,

웹뷰에서 http:// 링크를 열때 "net::ERR_CLEARTEXT_NOT_PERMITTED" 오류 메시지가 나오는 폰이 있네요~

폰 마다 다른데 AndroidOne 이라서 그런지 https:// 페이지는 이상없이 잘 열리는데 http:// 보안서버가 아닌 페이지는 안되는군요~

해결 방법은 AndroidManifest.xml 에서 application 태그안에

android:usesCleartextTraffic="true"

위 코드를 넣어주면 해결이 됩니다.

 

블로그 이미지

영은파더♥

가상서버호스팅 VPS 리눅스 서버관리 윈도우 IT

,

웹 페이지에서 자신이 만든 특정앱을 호출 실행하는 방법니다.

1. AndroidManifest.xml 파일에서 웹링크를 눌렀을때 실행될 액티비티를 정의합니다.

<activity
    android:name=".MyViewActivity"
    android:label="@string/app_name"
    android:screenOrientation="portrait"
    android:theme="@android:style/Theme.NoTitleBar">
    <intent-filter>
        <action android:name="android.intent.action.VIEW" />
        <category android:name="android.intent.category.DEFAULT" />
        <category android:name="android.intent.category.BROWSABLE" />
        <data android:scheme="스키마" android:host="호스트" />
    </intent-filter>
</activity>

  스키마, 호스트 <= 이 부분을 정의합니다.

 

2. MyViewActivity onCreate 함수에 아래 코드를 넣어서 웹에서 호출될 때 값을 파싱합니다.

Uri uriData = getIntent().getData();
if(uriData != null) {
    String param1 = uriData.getQueryParameter("param1");
    Log.e( "MyViewActivity", "Param1 : " + param1);
}

 

3. 웹 페이지에 앱을 실행할 코드를 작성합니다.

<a href="intent://호스트?param1=data1#Intent;
scheme=스키마;
action=android.intent.action.VIEW;
category=android.intent.category.BROWSABLE;
package=com.example.www;
end">
앱호출
</a>

  호스트, 파라메터, 스키마, package 를 자신에게 맞게 수정합니다.

앱을 미리 컴파일해서 실행을 한번 해준 다음에 웹 브라우저에서 위 링크를 눌러서 확인하면 됩니다.

 

 

블로그 이미지

영은파더♥

가상서버호스팅 VPS 리눅스 서버관리 윈도우 IT

,

안드로이드 WebView 에서 html 텍스트를 loadData 함수로 웹뷰가 가능합니다.

하지만 링크가 자동으로 걸리지는 않지요~

http, https 가 있는 문자열을 정규식으로 찾아서 치환해주는 소스코드입니다.

import java.util.regex.Matcher;
import java.util.regex.Pattern;

String regex = "[(https?:\/\/a-zA-Z0-9~#%&_=+:./)]{10,256}";
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(html);
while(matcher.find()) {
	System.out.println( matcher.group(0) );
	html = html.replace( matcher.group(0), "<a href='" + matcher.group(0) + "'>" + matcher.group(0) + "</a>");
}

입맛에 맛는 소스가 없어서 한번 만들어 봤습니다.

버그가 있을 수도 있습니다.

있다면 댓글에 좀 남겨주세요~

 

 

블로그 이미지

영은파더♥

가상서버호스팅 VPS 리눅스 서버관리 윈도우 IT

,
블로그 이미지

영은파더♥

가상서버호스팅 VPS 리눅스 서버관리 윈도우 IT

,

안드로이드에서 사용가능한 아이콘을 다운로드 받을 수 있는 사이트입니다.

무료인지는 잘 모르겠지만 구글에서 운영하는 사이트로 보여지네요~

https://material.io/tools/icons/?style=baseline

 

Icons - Material Design

Material icons are delightful, beautifully crafted symbols for common actions and items. Download on desktop to use them in your digital products for Android, iOS, and web.

material.io

[안드로이드] 아이콘 다운로드 사이트

위의 아이콘 외에도 엄청 많습니다.

url 링크로 한번 가서 둘러보세요~

png 또는 svg 로 다운로드 받을 수 있더군요~

 

블로그 이미지

영은파더♥

가상서버호스팅 VPS 리눅스 서버관리 윈도우 IT

,

삼성 갤럭시윈에 리눅스를 설치하는데 "Missing parameters: TARGET_PATH" 메시지 이후로 더 이상 설치가 안되는군요~

Missing parameters: TARGET_PATH

Debug 모드를 켜고 로그를 보니 Permission denied 퍼미션 문제로 나오는군요~

인터넷에 검색해서 아래 처럼 설정하고 진행하니 잘 됩니다.

왼쪽 상단에 옵션을 실행해서 설정으로 들어가서 아래의 옵션 값으로 설정을 합니다.

ENV 폴더 : /data/user/0/ru.meefik.linuxdeploy/files

PATH 값 : /system/xbin/

CLI 활성화 체크

ENV 업데이트

이제 다시 설치를 해보세요~

 

블로그 이미지

영은파더♥

가상서버호스팅 VPS 리눅스 서버관리 윈도우 IT

,

LG 옵티머스 GK 스마트폰에 리눅스를 한번 설치해 보았습니다.

Play 스토어에서 Linux Deploy 앱을 설치합니다.

Linux Deploy

생각 보다 많은 분들이 설치를 하였네요~

앱을 실행하면 도움말이 자세하게 나와있습니다.

루팅하는 방법은 https://ivps.tistosy.com/711 여기를 참고하세요~

2번의 링크를 눌러서 BusyBox 를 설치합니다.

 

BusyBox

설치하고 실행합니다.

 

설치를 눌러서 진행합니다.

 

루트 권한이 필요하다고 창이 뜨면 ALLOW 를 누릅니다.

 

BusyBox 설치가 완료되었습니다.

이제 다시 Linux Deploy 앱에서 원하는 리눅스 종류를 선택합니다.

저는 CentOS 를 선택했습니다.

 

ssh 에 사용할 계정과 비밀번호를 설정합니다.

 

그리고 SSH 활성화 항목에 체크를 합니다.

 

상단 오른쪽을 터치해서 설치를 진행합니다.

 

루트 권한을 요청하는 팝업이 뜨면 허용을 해줍니다.

 

30분 넘게 기다리면 설치가 완료됩니다.

물론 사용자 환경에 따라 시간은 달라질 수 있습니다.

 

위의 화면 처럼 <<< deploy 가 나오면 왼쪽 하단의 시작 버튼을 눌러서 리눅스 서비스를 시작합니다.

 

Starting extra/ssh ... done 이 나오는 것을 확인합니다.

이제 ssh 접속이 가능한 ssh client 앱을 설치하고 127.0.0.1 22번 포트로 연결합니다.

저 위에서 설정한 계정 정보로 로그인을 합니다.

공유기 와이파이로 연결되어서 그런지 192.168.x.x 로는 접속이 안되네요~

공유기에서 ssh 포트를 포트포워딩하고 외부아이피로 접속을 하니깐 잘 됩니다.

 

블로그 이미지

영은파더♥

가상서버호스팅 VPS 리눅스 서버관리 윈도우 IT

,

Kingo ROOT 앱과 같은 구글 플레이 스토어에 등록되지 않은 앱을 설치하다 보면 "Play 프로텍트에 의해 차단됨" 메시지를 볼 수가 있습니다.

이 화면에서 세부정보를 눌러서 계속 설치(안전하지 않음) 을 눌러서 설치를 하면 됩니다.

혹시 확인을 눌렀다면 앱을 재 설치 시도하더라도 더 이상 설치가 되지 않습니다.

 

이런 경우에는 애플리케이션 관리에서 "Google Play 스토어" 앱의 데이터 삭제를 하고 다시 설치하면 됩니다.

 

블로그 이미지

영은파더♥

가상서버호스팅 VPS 리눅스 서버관리 윈도우 IT

,