'Android'에 해당되는 글 2건
- 2019.08.25 :: [android]Soap 통신하기 - client
- 2019.08.25 :: [android]SurfaceView Screenshot 찍기
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 |
---|
SurfaceView의 경우 일반 View와는 다르게 Screenshot을 찍기위해서는 과정이 추가로 필요하다. 마침 나와 같은 문제를 겪고있는 분의 블로그를 발견했다.
- 출처 -
[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 |
---|