마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

NFC로 BLOB타입의 이미지를 보내려하는데 byte로 변환을 해야하나요? [closed]

0 추천
package org.androidtown.lbs.map;

import android.annotation.TargetApi;
import android.app.Activity;
import android.content.Intent;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.graphics.BitmapFactory;
import android.net.Uri;
import android.nfc.NfcAdapter;
import android.nfc.NfcAdapter.CreateBeamUrisCallback;
import android.nfc.NfcAdapter.OnNdefPushCompleteCallback;
import android.nfc.NfcEvent;
import android.os.Build;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;

@TargetApi(Build.VERSION_CODES.JELLY_BEAN)
public class NFCActivity extends Activity implements
		CreateBeamUrisCallback, OnNdefPushCompleteCallback {

	DBHandler dbHandler;
	SQLiteDatabase db;
	Cursor cursor = null;
	
	private static final String TAG = "NFCActivity";
	private static final int PICK_IMAGE = 100;

	private NfcAdapter mNfcAdapter;
	private Uri mSelImgUri;

	private TextView mUriName;
	private ImageView mPreviewImage;

	@TargetApi(Build.VERSION_CODES.JELLY_BEAN)
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.nfc);

		mUriName = (TextView) findViewById(R.id.imagePathText);
		mPreviewImage = (ImageView) findViewById(R.id.selImageView);

		// Check for available NFC Adapter. NFC를 사용할수 있는 기기인지 확인
		mNfcAdapter = NfcAdapter.getDefaultAdapter(this);
		
		if (mNfcAdapter == null) {
			mUriName.setText("NFC를 사용할 수 없는 기기입니다.");
		} else {
			// Register callback to set NDEF message
			mNfcAdapter.setBeamPushUrisCallback(this, this);
			// Register callback to listen for message-sent success
			mNfcAdapter.setOnNdefPushCompleteCallback(this, this);
		}

		showImg_nfc();
	}

	//onClick. 클릭했을때 갤러리에서 사진을 가져옴
	public void selectImage(View v) {
		Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
		intent.setType("image/*"); //image/ 폴더에서 데이터를 가져옴
		startActivityForResult(intent, PICK_IMAGE);
	}

	//위 selectImage에서 가져온 이미지의 결과
	@Override
	protected void onActivityResult(int requestCode, int resultCode, Intent data) {
		if (requestCode == PICK_IMAGE && resultCode == RESULT_OK
				&& data != null) {
			mUriName.setText(data.getData().toString()); // 이미지의 Uri를 mUriName에 setText
			mSelImgUri = data.getData(); // 이미지의 Uri를 가져옴
			mPreviewImage.setImageURI(data.getData()); // 이미지를 mPreviewImage에 보여줌
		}
	}
	// onResume() 함수는 focus를 다시 얻었을때 불린다.
	@Override
	public void onResume() {
		super.onResume();
		// Check to see that the Activity started due to an Android Beam
		if (Intent.ACTION_VIEW.equals(getIntent().getAction())) {
			processIntent(getIntent());
		}
	}

	@Override
	public void onNewIntent(Intent intent) {
		// onResume gets called after this to handle the intent
		Toast.makeText(this, "111 : " + intent.getAction(), Toast.LENGTH_LONG).show();
		setIntent(intent);
	}

	void processIntent(Intent intent) {
		Uri data = intent.getData();
		if (data != null) {
			mPreviewImage.setImageURI(data);
		} else {
			mUriName.setText("Received Invalid Image Uri");
		}
	}


	@Override
	public Uri[] createBeamUris(NfcEvent event) {
		if (mSelImgUri == null) {
			return null;
		}
		return new Uri[] { mSelImgUri };
	}

	@Override
	public void onNdefPushComplete(NfcEvent event) {
		Log.i(TAG, "Push Complete!");
	}

	private void showImg_nfc() {
		dbHandler = new DBHandler(this);

		try{
			// String sql1 = "select ncimg from members where "+ code;
			// Cursor cursor = db.rawQuery("select code from members", null);
			cursor = dbHandler.selectNC();
			cursor.moveToLast();
			byte[] image = cursor.getBlob(cursor.getColumnIndex("ncimg"));
			// Bitmap bm = BitmapFactory.decodeByteArray(image, 0, image.length);
			ImageView blobImg_nfc = (ImageView) findViewById(R.id.selImageView);

			blobImg_nfc.setImageBitmap(BitmapFactory.decodeByteArray(image, 0, image.length));
			cursor.close();
		}catch (Exception e){
			e.printStackTrace();
		}
	}
}

제가 참고하던 예제는 갤러리에서 이미지를 가져와 NFC로 전송하는 예제인데요.

이걸 응용해 DB에 BLOB타입의 이미지를 전송하고 싶은데

byte로 변환 한뒤에 전송 해주어야 하나요? 

그리고 제가 초보라서 어느 부분이 전송하는 부분인지 확실하게 모르겠습니다....ㅠ

아 그리고 위 예제에서 다른폰에서 같은 앱을 실행시켜 NFC로 전송 하고자 할때 읽어 주는 부분이 있나요?

아니면 읽어주는 부분이 없어도 자동으로 받아와 주는건가요?

초보라서 질문이 많네요 죄송합니다. 도와주세요ㅠㅠ

 

ps. 아 맨밑에 showimg_nfc는 제가 DB에서 이미지를 불러오면서 적은 부분입니다. (이미지는 제대로 불러와져요.)

질문을 종료한 이유: 해결
sean111 (1,220 포인트) 님이 2015년 9월 12일 질문
sean111님이 2015년 10월 6일 closed
...