NDK 관련된 샘플을 돌려보고자 이것저것 설치했더니


기존에 잘 되던 일반 프로젝트에서 에러가 발생했다.

'No toolchains found in the NDK toolchains folder for ABI with prefix: mips64el-linux-android'


NDK 버전이 올라가면서 MIPS형 CPU에 대한 지원이 중단되어 나오는 현상이란다.


따라서 app 수준의 build.gradle 을 열어 gradle 의 버전을 올려주어야 한다.


기존 : 

'com.android.tools.build:gradle:3.0.1'


변경 :  (최소 3.1.4 버전으로 해야한다.)

'com.android.tools.build:gradle:3.1.4'



이렇게 변경하고 re-build 해주면 (때에 따라 android studio를 재시작) 정상 작동한다.



Posted by 디데잉
,

MenuDrawer를 이용중에 Fragment 내에서 여러 Fragment를 swipe 해야될 경우가 있었다.

MenuDrawer를 재 선택하면 onCreateView 가 호출되지 않는 문제로 약 3일간 고생을 했다...


우연찮게 국내 개발자가 코멘트 해놓은 것을 보고 차이점을 알게 되어 해결하였다..

예전에 한개의 FragmentActivity에서 Fragment를 다룰때는 ①번의 방법으로 했었지만,

이번에는 Fragment에서 ViewPager를 이용하여 하위 Fragment를 다뤄야했기에 ②번의 방법으로 했어야 한다는 것이다.


// ① in Parent

mViewPager.setAdapter(new pagerAdapter(context.getSupportFragmentManager()));


// ② in Child
mViewPager.setAdapter(new pagerAdapter(getChildFragmentManager()));



참조

http://oooooooooooe.blogspot.kr/2014/12/fragment-oncreateview-not-called.html

http://stackoverflow.com/questions/6672066/fragment-inside-fragment



Posted by 디데잉
,

카카오API 를 이용할 경우 해쉬값이 필요할 때가 있다.

아래 함수를 이용해서 하니 되더라.


private void getAppKeyHash() {

try {

PackageInfo info = getPackageManager().getPackageInfo(getPackageName(), PackageManager.GET_SIGNATURES);

for (Signature signature : info.signatures) {

MessageDigest md;

md = MessageDigest.getInstance("SHA");

md.update(signature.toByteArray());

String something = new String(Base64.encode(md.digest(), 0));

Log.d("Hash key", something);

}

} catch (Exception e) {

// TODO Auto-generated catch block

Log.e("name not found", e.toString());

}

}

Posted by 디데잉
,



[2015-10-21 22:29:35 - 프로젝트명] ActivityManager: Error type 3

[2015-10-21 22:29:35 - 프로젝트명] ActivityManager: Error: Activity class {패키지명.클래스} does not exist.


컴파일이 잘 되던 프로젝트가 갑자기 위와 같은 오류를 뿜어내며 되지 않는다.

Clean도 해보았고, 기기 재부팅, 버전 변경 등 해보았지만 증상은 동일.


어느샌가부터 갑자기 Manifest 에 아래 옵션이 추가되어있길래 해당 옵션을 지우니 정상적으로 진행이 된다..

뭘까... 해프닝...

android:hasCode="true" android:enabled="false"

Posted by 디데잉
,

* 시스템 설정 - 소리 - audio output mode를 프로그램 소스상으로 처리할 경우


1. 퍼미션 추가

<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />


2. 아래 소스코드 이용

AudioManager mAudioManager = (AudioManager)getSystemService(Context.AUDIO_SERVICE);

mAudioManager.setParameters("audio_devices_out_active=AUDIO_CODEC");

ex) 
AUDIO_CODEC
AUDIO_HDMI
AUDIO_SPDIF


Posted by 디데잉
,

 제가 사용하는 Cocos2d 라이브러리 파일입니다. (for Android)

cocos2d-android.jar

 

Posted by 디데잉
,

 

첫번째 방법
EditText의 속성중 singleLine 활성화 시켜주기
xml코드에서
해당 EditText에서

android:singleLine = "true"
 android:lines = "1"

을 추가해주자. 

두번째 방법
코드상에서 온클릭리스너를 통해서 엔터시에 할일을 재정의 해주면 된다.
public boolean onKey(View v, int keyCode, KeyEvent event) {
if(event.getAction() == KeyEvent.ACTION_DOWN){
if(keyCode == KeyEvent.KEYCODE_ENTER){
//엔터입력시 할일 처리 
//없으면 입력 하지 않음.

 

출처 : http://ppomlab.tistory.com/4

 

Posted by 디데잉
,

이 세 줄이면 간단하게 해결된다.

moveTaskToBack(true);
finish();
android.os.Process.killProcess(android.os.Process.myPid());

 

 

Posted by 디데잉
,

 

main

ArrayAdapter<CharSequence> adspin;
Spinner spin;

spin = (Spinner)findViewById(R.id.myspinner);

adspin = ArrayAdapter.createFromResource(this, R.array.title, android.R.layout.simple_spinner_item);
  adspin.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

  spin.setPrompt("스피너 제목");
  spin.setAdapter(adspin);

  spin.setOnItemSelectedListener(new OnItemSelectedListener() {
   public void onItemSelected(AdapterView<?> parent, View view, int position, long id){


   }
   public void onNothingSelected(AdapterView<?> parent){}

  });

 


  btn_result.setOnClickListener(new OnClickListener() {
   public void onClick(View v) {

    Intent intent = new Intent(MainActivity.this,ViewActivity.class);
    intent.putExtra("select", spin.getSelectedItem().toString());
    
    startActivity(intent);

   }
  });

 

 

view

TextView view_title;
view_title = (TextView)findViewById(R.id.view_title);

Bundle intent3 = getIntent().getExtras();
  view_title.setText(intent3.getString("select"));

 

 

 

참고 : http://ragstory.egloos.com/3724921

 

Posted by 디데잉
,

예)

MainActivity.java

EditText Text1;
Text1 = (EditText)findViewById(R.id.EditText1);

final String TEXT = Text1.getText().toString();
Intent intent = new Intent(MainActivity.this, ViewActivity.class);
intent.putExtra("TEXT", TEXT);
startActivity(intent);

 

ViewActivity.java

TextView View1;
View1 = (TextView)findViewById(R.id.TextView1);

Bundle intent = getIntent().getExtras();
View1.setText(intent.getString("TEXT");

 

 

MainActivity 의 EditText로 부터 입력받은 값을 저장하여 ViewActivity 의 TextView로 뿌려주기

 

 

Posted by 디데잉
,