저는 android studio를 처음 사용하고 자습서를 따라 키보드를 성공적으로 만들었습니다. 지금은 타임 스탬프 이벤트를 캡처하려고합니다. 그래서 버튼을 누르면 타임 스탬프가 생깁니다. SQLite 데이터베이스를 사용해 보았지만 문제가있었습니다. 텍스트 파일을 만들고 파일에 데이터를 저장하려고합니다. 나는 누군가가 이것으로 나를 도울 수 있을지 궁금해하고 있었다.키보드 입력으로 텍스트 파일에 내부적으로 데이터 저장
저는 SO에 대한 조사를 해봤지만 외부 sdcard에 데이터를 저장하는 데 필요한 설명서 만 찾았고 작동하지 않는 코드를 수정하려고 시도했습니다.
import android.content.Context;
import android.inputmethodservice.InputMethodService;
import android.inputmethodservice.Keyboard;
import android.inputmethodservice.KeyboardView;
import android.media.AudioManager;
import android.view.KeyEvent;
import android.view.View;
import android.view.inputmethod.InputConnection;
import java.io.File;
import java.io.FileOutputStream;
import java.io.FileWriter;
public class SimpleIME extends InputMethodService
implements KeyboardView.OnKeyboardActionListener {
private KeyboardView kv;
private Keyboard keyboard;
private boolean caps = false;
@Override
public View onCreateInputView() {
kv = (KeyboardView)getLayoutInflater().inflate(R.layout.keyboard, null);
keyboard = new Keyboard(this, R.xml.qwerty);
kv.setKeyboard(keyboard);
kv.setOnKeyboardActionListener(this);
return kv;
}
private void playClick(int keyCode){
AudioManager am = (AudioManager)getSystemService(AUDIO_SERVICE);
switch(keyCode){
case 32:
am.playSoundEffect(AudioManager.FX_KEYPRESS_SPACEBAR);
break;
case Keyboard.KEYCODE_DONE:
case 10:
am.playSoundEffect(AudioManager.FX_KEYPRESS_RETURN);
break;
case Keyboard.KEYCODE_DELETE:
am.playSoundEffect(AudioManager.FX_KEYPRESS_DELETE);
break;
default: am.playSoundEffect(AudioManager.FX_KEYPRESS_STANDARD);
}
}
@Override
public void onKey(int primaryCode, int[] keyCodes) {
InputConnection ic = getCurrentInputConnection();
playClick(primaryCode);
switch(primaryCode){
case Keyboard.KEYCODE_DELETE :
ic.deleteSurroundingText(1, 0);
break;
case Keyboard.KEYCODE_SHIFT:
caps = !caps;
keyboard.setShifted(caps);
kv.invalidateAllKeys();
break;
case Keyboard.KEYCODE_DONE:
ic.sendKeyEvent(new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_ENTER));
break;
default:
char code = (char)primaryCode;
if(Character.isLetter(code) && caps){
code = Character.toUpperCase(code);
}
ic.commitText(String.valueOf(code),1);
}
}
정확하게 작동하지 않는 문서, 사용한 문서 등을 알려주십시오. 광범위한 질문입니다. 더 많은 정보를 제공하지 않으면 누구나 답변을하면 놀라지 않을 것입니다. 파일에 명시 적으로 데이터를 저장하는 것이 아니라 일부 데이터베이스 모델을 사용하는 것이 더 좋습니다. "큰"데이터베이스에 들어가기를 원하지 않으면 SugarORM을 사용해보십시오. 그것은 SQLite를위한 쉬운 ORM입니다. – sp0rk
@spork 기본적으로 텍스트 파일을 만들고 단추를 누를 때 시간 소인을 삽입하는 방법을 알고 싶습니다. SQLite를 사용하여 이것을 어떻게 할 수 있습니까? – csciBeginner