'Android'에 해당되는 글 2건

  1. 2019.08.25 :: [android]Soap 통신하기 - client
  2. 2019.08.25 :: [android]SurfaceView Screenshot 찍기
Android 2019. 8. 25. 12:47

Android Soap 통신 정리

 

Client 구성

 

1. Android Project 생성

2. AndroidMenifest .xml에 permission 추가

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

3. ksoap2-android-assembly-0.0.0.jar 추가

4. 코드 작성

import org.ksoap2.transport.HttpTransportSE;
import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.os.Looper;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;

public class KSOAPParserActivity extends Activity {
	private static final String NAMESPACE = "SOAP NAMESPACE";
	private static final String URL = "SOAP URL";
	private static final String SOAP_ACTION = "SOAP ACTION"
	private static final String METHOD_NAME = "METHOD_NAME";
	String token = null;
	TextView TextView01;

	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_ksoapparser);
		TextView01 = (TextView) findViewById(R.id.TextView01);
		final Button button = (Button) findViewById(R.id.button1);
		SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME);
		final SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(
				SoapEnvelope.VER11);
		envelope.setOutputSoapObject(request);
		envelope.implicitTypes = true;
		envelope.dotNet = true;
		Log.d("hong", "URL 전");
		new Thread(new Runnable() {
			public void run() {
				try {
					HttpTransportSE androidHttpTransport = new HttpTransportSE(URL);
					androidHttpTransport.call(SOAP_ACTION , envelope);
					Log.d("hong", "오류안남");
					// SoapObject soapResponse = (SoapObject)envelope.bodyIn;
					// Object result = soapResponse.getProperty("Result");
					Object result = (Object) envelope.getResponse();
					Log.d("hong", "result : " + result.toString());
					token = result.toString();
					button.setOnClickListener(new OnClickListener() {
						@Override
						public void onClick(View v) {
							TextView01.setText(token);
						}
					});
				} catch (final Exception e) {
					Handler mHandler = new Handler(Looper.getMainLooper());
					mHandler.postDelayed(new Runnable() {
						@Override
						public void run() {
							Toast.makeText(
									getApplicationContext(),
									"cause by : " + e.getMessage() + " / "
											+ e.getStackTrace(),
									Toast.LENGTH_LONG).show();
							TextView01.setText("cause by : " + e.getMessage());
							e.getMessage();
						}
					}, 0);
				}
			}
		}).start();
	}
}

SDK 일정 version 이상에서는 mainActivity에서 network와 관련된 작업을 하면 오류가 남(?)

그리하여 network 작업을 하는 부분을 Thread를 이용해서 처리.

try {} catch {} 문구에서 catch 부분에 handler를 적용시키지 않으면 

java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare()

이런 오류가 발생함.

그래서 handler를 사용하여 이를 처리.

 

이렇게 하면 client 부분은 완성.

'Android' 카테고리의 다른 글

[android]SurfaceView Screenshot 찍기  (0) 2019.08.25
posted by 초코렛과자
:
Android 2019. 8. 25. 12:27

SurfaceView의 경우 일반 View와는 다르게 Screenshot을 찍기위해서는 과정이 추가로 필요하다. 마침 나와 같은 문제를 겪고있는 분의 블로그를 발견했다.

 

 - 출처 - 

http://unlimitedpower.tistory.com/entry/Andorid-SurfaceView-ViewGroup-View-%EB%A5%BC-Bitmap%EC%9C%BC%EB%A1%9C-%EC%A0%84%ED%99%98%ED%95%98%EA%B8%B0

 

[Andorid] SurfaceView, ViewGroup, View 를 Bitmap으로 전환하기

안드로이드 개발을 진행하다 보면 View를 Bitmap으로 전환해야 하는 경우가 종종 생기는 것 같습니다. 제 상황에서는 FrameLayout안에 View들이 레이어를 이루고 있었는데 이 FrameLayout을 Bitmap으로 전환하여..

unlimitedpower.tistory.com

 

public static Bitmap viewToBitmap(View view) {
    Bitmap bitmap = Bitmap.createBitmap(view.getWidth(), 
    				view.getHeight(), Bitmap.Config.ARGB_8888);
    Canvas canvas = new Canvas(bitmap);
    if (view instanceof SurfaceView) {
        SurfaceView surfaceView = (SurfaceView) view;
        surfaceView.setZOrderOnTop(true);
        surfaceView.draw(canvas);
        surfaceView.setZOrderOnTop(false);
        return bitmap;
    } else {
        
//For ViewGroup & View
        view.draw(canvas);
        return bitmap;
    }
}

이 외에도 stackoverflow 에서 제목과 같은 검색어로 검색하면 여러 예제가 나오는데, 맞춰서 사용하면 될 것 같다.

문제해결.

 

'Android' 카테고리의 다른 글

[android]Soap 통신하기 - client  (0) 2019.08.25
posted by 초코렛과자
: