Register Register Member Login Member Login Member Login Forgot Password ??
PHP , ASP , ASP.NET, VB.NET, C#, Java , jQuery , Android , iOS , Windows Phone
 

Registered : 109,038

HOME > Mobile > Mobile Forum > สอบถามเกี่ยวกับการเขียน Android Geofencing ครับ รันได้ ไม่มี Error แต่ไม่มีการแจ้งเตือนใดๆ


[Mobile] สอบถามเกี่ยวกับการเขียน Android Geofencing ครับ รันได้ ไม่มี Error แต่ไม่มีการแจ้งเตือนใดๆ

 
Topic : 121401



โพสกระทู้ ( 3 )
บทความ ( 0 )



สถานะออฟไลน์



ผมลองเขียนโค้ด geofence ในโปรแกรม Android Studio สามารถรันได้ ไม่มี Error แต่ไม่มี Notification แจ้งเตือนเลย ทั้งเวลาเดินเข้า ขณะอยู่ และเดินออกจากพิกัด รบกวนทีครับ

MainActivity

Code (Android-Java)
001.package com.example.crmtracking.fromweb;
002. 
003.import android.content.Context;
004.import android.graphics.Color;
005.import android.os.Bundle;
006.import android.support.v4.app.FragmentActivity;
007.import android.view.View;
008.import android.widget.Button;
009.import android.widget.Toast;
010. 
011.import com.google.android.gms.common.ConnectionResult;
012.import com.google.android.gms.common.GooglePlayServicesUtil;
013.import com.google.android.gms.location.Geofence;
014.import com.google.android.gms.maps.CameraUpdateFactory;
015.import com.google.android.gms.maps.GoogleMap;
016.import com.google.android.gms.maps.GoogleMap.OnCameraChangeListener;
017.import com.google.android.gms.maps.SupportMapFragment;
018.import com.google.android.gms.maps.model.CameraPosition;
019.import com.google.android.gms.maps.model.CircleOptions;
020.import com.google.android.gms.maps.model.LatLng;
021.import com.google.android.gms.maps.model.MarkerOptions;
022. 
023.import java.util.ArrayList;
024. 
025. 
026.public class MainActivity extends FragmentActivity implements OnCameraChangeListener {
027.     
028.    private GoogleMap mMap;
029. 
030.    
031.    ArrayList<Geofence> mGeofences;
032. 
033.     
034.    ArrayList<LatLng> mGeofenceCoordinates;
035. 
036.     
037.    ArrayList<Integer> mGeofenceRadius;
038. 
039.     
040.    private GeofenceStore mGeofenceStore;
041.   
042. 
043.     
044. 
045.    @Override
046.    protected void onCreate(Bundle savedInstanceState) {
047.        super.onCreate(savedInstanceState);
048.        setContentView(R.layout.activity_main);
049. 
050.        GoogleMap mMap = ((SupportMapFragment)getSupportFragmentManager()
051.                .findFragmentById(R.id.map)).getMap();
052. 
053.        mMap.addMarker(new MarkerOptions().position(
054.                new LatLng(13.729468, 100.779361))
055.                .title("คณะวิทยาศาสตร์"));
056.        mMap.addMarker(new MarkerOptions().position(
057.                new LatLng(13.726566, 100.780104))
058.                .title("คณะเทคโนโลยีการเกษตร"));
059.        mMap.addMarker(new MarkerOptions().position(
060.                new LatLng(13.725534, 100.776338))
061.                .title("คณะสถาปัตยกรรมศาสตร์"));
062.        mMap.addMarker(new MarkerOptions().position(
063.                new LatLng(13.727108, 100.773323))
064.                .title("คณะวิศวะกรรมศาสตร์"));
065.        
066. 
067. 
068.         
069.        mGeofences = new ArrayList<Geofence>();
070.        mGeofenceCoordinates = new ArrayList<LatLng>();
071.        mGeofenceRadius = new ArrayList<Integer>();
072. 
073. 
074.         
075.        mGeofenceCoordinates.add(new LatLng(13.729468, 100.779361)); //วิทยาศาสตร์
076.        mGeofenceCoordinates.add(new LatLng(13.726566, 100.780104)); //เทคโนโลยีการเกษตร
077.        mGeofenceCoordinates.add(new LatLng(13.725534, 100.776338)); //สถาปัตยกรรมศาสตร์
078.        mGeofenceCoordinates.add(new LatLng(13.727108, 100.773323)); //วิศวะกรรมศาสตร์
079.      
080. 
081.         
082.        mGeofenceRadius.add(120);
083.        mGeofenceRadius.add(120);
084.        mGeofenceRadius.add(120);
085.        mGeofenceRadius.add(120);
086.         
087.         
088. 
089.        // วิทยาศาสตร์
090.        mGeofences.add(new Geofence.Builder()
091.                .setRequestId("คณะวิทยาศาสตร์")
092.                         
093.                .setCircularRegion(mGeofenceCoordinates.get(0).latitude, mGeofenceCoordinates.get(0).longitude, mGeofenceRadius.get(0).intValue())
094.                .setExpirationDuration(Geofence.NEVER_EXPIRE)
095.                         
096.                .setLoiteringDelay(30000)
097.                .setTransitionTypes(
098.                        Geofence.GEOFENCE_TRANSITION_ENTER
099.                                | Geofence.GEOFENCE_TRANSITION_DWELL
100.                                | Geofence.GEOFENCE_TRANSITION_EXIT).build());
101. 
102. 
103.        // เทคโนโลยีการเกษตร
104.        mGeofences.add(new Geofence.Builder()
105.                .setRequestId("คณะเทคโนโลยีการเกษตร")
106.                         
107.                .setCircularRegion(mGeofenceCoordinates.get(1).latitude, mGeofenceCoordinates.get(1).longitude, mGeofenceRadius.get(1).intValue())
108.                .setExpirationDuration(Geofence.NEVER_EXPIRE)
109.                         
110.                .setLoiteringDelay(30000)
111.                .setTransitionTypes(
112.                        Geofence.GEOFENCE_TRANSITION_ENTER
113.                                | Geofence.GEOFENCE_TRANSITION_DWELL
114.                                | Geofence.GEOFENCE_TRANSITION_EXIT).build());
115. 
116.        // สถาปัตยกรรมศาสตร์
117.        mGeofences.add(new Geofence.Builder()
118.                .setRequestId("คณะสถาปัตยกรรมศาสตร์")
119.                         
120.                .setCircularRegion(mGeofenceCoordinates.get(2).latitude, mGeofenceCoordinates.get(2).longitude, mGeofenceRadius.get(2).intValue())
121.                .setExpirationDuration(Geofence.NEVER_EXPIRE)
122.                .setLoiteringDelay(30000)
123.                .setTransitionTypes(
124.                        Geofence.GEOFENCE_TRANSITION_ENTER
125.                                | Geofence.GEOFENCE_TRANSITION_DWELL
126.                                | Geofence.GEOFENCE_TRANSITION_EXIT).build());
127. 
128.        // วิศวะกรรมศาสตร์
129.        mGeofences.add(new Geofence.Builder()
130.                .setRequestId("คณะวิศวะกรรมศาสตร์")
131.                         
132.                .setCircularRegion(mGeofenceCoordinates.get(3).latitude, mGeofenceCoordinates.get(3).longitude, mGeofenceRadius.get(3).intValue())
133.                .setExpirationDuration(Geofence.NEVER_EXPIRE)
134.                .setLoiteringDelay(30000)
135.                .setTransitionTypes(
136.                        Geofence.GEOFENCE_TRANSITION_ENTER
137.                                | Geofence.GEOFENCE_TRANSITION_DWELL
138.                                | Geofence.GEOFENCE_TRANSITION_EXIT).build());
139. 
140.        
141. 
142. 
143.         
144.        mGeofenceStore = new GeofenceStore(this, mGeofences);
145. 
146.        btnShow = (Button) findViewById(R.id.Bsearch);
147.    }
148. 
149.    @Override
150.    protected void onStart() {
151. 
152.        super.onStart();
153.    }
154. 
155.    @Override
156.    protected void onStop() {
157.        mGeofenceStore.disconnect();
158.        super.onStop();
159. 
160. 
161.    }
162. 
163.    @Override
164.    protected void onResume() {
165.        super.onResume();
166.        if (GooglePlayServicesUtil.isGooglePlayServicesAvailable(this) == ConnectionResult.SUCCESS) {
167.            setUpMapIfNeeded();
168.        } else {
169.            GooglePlayServicesUtil.getErrorDialog(
170.                    GooglePlayServicesUtil.isGooglePlayServicesAvailable(this),
171.                    this, 0);
172.        }
173.    }
174. 
175.    private void setUpMapIfNeeded() {
176.        
177.        if (mMap == null) {
178.             
179.            mMap = ((SupportMapFragment) getSupportFragmentManager()
180.                    .findFragmentById(R.id.map)).getMap();
181. 
182.             
183.            if (mMap != null) {
184.                setUpMap();
185.            }
186.        }
187.    }
188. 
189.   
190. 
191.    public void Onclick(View v) {
192. 
193. 
194.        Context g1 = getApplicationContext();
195.        String g2 = "คุณอยู่ในคณะวิทยาศาสตร์";
196.        int g3 = Toast.LENGTH_LONG;
197.        Toast g = Toast.makeText(g1, g2, g3);
198. 
199. 
200.        Context t1 = getApplicationContext();
201.        String t2 = "คุณไม่ได้อยู่ในคณะวิทยาศาสตร์";
202.        int t3 = Toast.LENGTH_LONG;
203.        Toast t = Toast.makeText(t1, t2, t3);
204. 
205.        Context a1 = getApplicationContext();
206.        String a2 = "คุณอยู่ในคณะเทคโนโลยีการเกษตร";
207.        int a3 = Toast.LENGTH_LONG;
208.        Toast a = Toast.makeText(a1, a2, a3);
209. 
210.        Context b1 = getApplicationContext();
211.        String b2 = "คุณไม่ได้อยู่ในคณะเทคโนโลยีการเกษตร";
212.        int b3 = Toast.LENGTH_LONG;
213.        Toast b = Toast.makeText(b1, b2, b3);
214. 
215.        Context c1 = getApplicationContext();
216.        String c2 = "คุณอยู่ในคณะสถาปัตยกรรมศาสตร์";
217.        int c3 = Toast.LENGTH_LONG;
218.        Toast c = Toast.makeText(c1, c2, c3);
219. 
220.        Context d1 = getApplicationContext();
221.        String d2 = "คุณไม่ได้อยู่ในคณะสถาปัตยกรรมศาสตร์";
222.        int d3 = Toast.LENGTH_LONG;
223.        Toast d = Toast.makeText(d1, d2, d3);
224. 
225.        Context e1 = getApplicationContext();
226.        String e2 = "คุณอยู่ในคณะวิศวะกรรมศาสตร์";
227.        int e3 = Toast.LENGTH_LONG;
228.        Toast e = Toast.makeText(e1, e2, e3);
229. 
230.        Context f1 = getApplicationContext();
231.        String f2 = "คุณไม่ได้อยู่ในคณะวิศวะกรรมศาสตร์";
232.        int f3 = Toast.LENGTH_LONG;
233.        Toast f = Toast.makeText(f1, f2, f3);
234. 
235. 
236.    }
237. 
238. 
239.    private void setUpMap() {
240.        
241.         
242.        mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(13.729468, 100.779361), 16));
243.        mMap.setIndoorEnabled(false);
244.        mMap.setMyLocationEnabled(true);
245. 
246.        mMap.setOnCameraChangeListener(this);
247. 
248.    }
249. 
250. 
251.     
252.    @Override
253.    public void onCameraChange(CameraPosition position) {
254.         
255. 
256. 
257. 
258.        for(int i = 0; i < mGeofenceCoordinates.size(); i++)
259.        {
260. 
261.            mMap.addCircle(new CircleOptions()
262.                    .center(mGeofenceCoordinates.get(i))
263.                    .radius(mGeofenceRadius.get(i).intValue())
264.                    .fillColor(0x40ff0000)
265.                    .strokeColor(Color.TRANSPARENT)
266.                    .strokeWidth(2));
267. 
268. 
269.        }
270. 
271. 
272.    }
273. 
274. 
275.}





GeofenceStore

Code (Android-Java)
001.package com.example.crmtracking.fromweb;
002. 
003.import java.util.ArrayList;
004. 
005.import android.app.PendingIntent;
006.import android.content.Context;
007.import android.content.Intent;
008.import android.location.Location;
009.import android.os.Bundle;
010.import android.util.Log;
011. 
012.import com.google.android.gms.common.ConnectionResult;
013.import com.google.android.gms.common.api.GoogleApiClient;
014.import com.google.android.gms.common.api.GoogleApiClient.ConnectionCallbacks;
015.import com.google.android.gms.common.api.GoogleApiClient.OnConnectionFailedListener;
016.import com.google.android.gms.common.api.PendingResult;
017.import com.google.android.gms.common.api.ResultCallback;
018.import com.google.android.gms.common.api.Status;
019.import com.google.android.gms.location.Geofence;
020.import com.google.android.gms.location.GeofencingRequest;
021.import com.google.android.gms.location.LocationListener;
022.import com.google.android.gms.location.LocationRequest;
023.import com.google.android.gms.location.LocationServices;
024. 
025.public class GeofenceStore implements ConnectionCallbacks,
026.        OnConnectionFailedListener, ResultCallback<Status>, LocationListener {
027. 
028.    private final String TAG = this.getClass().getSimpleName();
029. 
030.     
031.    private Context mContext;
032. 
033.    
034.    private GoogleApiClient mGoogleApiClient;
035. 
036.    
037.    private PendingIntent mPendingIntent;
038. 
039.    
040.    private ArrayList<Geofence> mGeofences;
041. 
042.    
043.    private GeofencingRequest mGeofencingRequest;
044. 
045.     
046.    private LocationRequest mLocationRequest;
047. 
048.    
049.    public GeofenceStore(Context context, ArrayList<Geofence> geofences) {
050.        mContext = context;
051.        mGeofences = new ArrayList<Geofence>(geofences);
052.        mPendingIntent = null;
053. 
054.         
055.        mGoogleApiClient = new GoogleApiClient.Builder(context)
056.                .addApi(LocationServices.API).addConnectionCallbacks(this)
057.                .addOnConnectionFailedListener(this).build();
058. 
059.         
060.        mLocationRequest = new LocationRequest();
061.         
062.        mLocationRequest.setInterval(10000);
063.         
064.        mLocationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);
065. 
066.        mGoogleApiClient.connect();
067.    }
068. 
069.    @Override
070.    public void onResult(Status result) {
071.        if (result.isSuccess()) {
072.            Log.v(TAG, "Success!");
073.        } else if (result.hasResolution()) {
074.            // TODO Handle resolution
075.        } else if (result.isCanceled()) {
076.            Log.v(TAG, "Canceled");
077.        } else if (result.isInterrupted()) {
078.            Log.v(TAG, "Interrupted");
079.        } else {
080. 
081.        }
082. 
083.    }
084. 
085.    @Override
086.    public void onConnectionFailed(ConnectionResult connectionResult) {
087.        Log.v(TAG, "Connection failed.");
088.    }
089. 
090.    @Override
091.    public void onConnected(Bundle connectionHint) {
092.         
093.        mGeofencingRequest = new GeofencingRequest.Builder().addGeofences(
094.                mGeofences).build();
095. 
096.        mPendingIntent = createRequestPendingIntent();
097. 
098.       
099.        LocationServices.FusedLocationApi.requestLocationUpdates(
100.                mGoogleApiClient, mLocationRequest, this);
101. 
102.         
103.        PendingResult<Status> pendingResult = LocationServices.GeofencingApi
104.                .addGeofences(mGoogleApiClient, mGeofencingRequest,
105.                        mPendingIntent);
106. 
107.         
108.        pendingResult.setResultCallback(this);
109.    }
110. 
111.    @Override
112.    public void onConnectionSuspended(int cause) {
113.        Log.v(TAG, "Connection suspended.");
114.    }
115. 
116.     
117.    private PendingIntent createRequestPendingIntent() {
118.        if (mPendingIntent == null) {
119.            Log.v(TAG, "Creating PendingIntent");
120.            Intent intent = new Intent(mContext, GeofenceIntentService.class);
121.            mPendingIntent = PendingIntent.getService(mContext, 0, intent,
122.                    PendingIntent.FLAG_UPDATE_CURRENT);
123.        }
124. 
125.        return mPendingIntent;
126.    }
127. 
128.    @Override
129.    public void onLocationChanged(Location location) {
130. 
131.        Log.v(TAG, "Location Information\n"
132.                + "==========\n"
133.                + "Provider:\t" + location.getProvider() + "\n"
134.                + "Lat & Long:\t" + location.getLatitude() + ", "
135.                + location.getLongitude() + "\n"
136.                + "Altitude:\t" + location.getAltitude() + "\n"
137.                + "Bearing:\t" + location.getBearing() + "\n"
138.                + "Speed:\t\t" + location.getSpeed() + "\n"
139.                + "Accuracy:\t" + location.getAccuracy() + "\n");
140.    }
141. 
142.    public void disconnect() {
143.        mGoogleApiClient.disconnect();
144.    }
145.}





GeofenceIntentService

Code (Android-Java)
001.package com.example.crmtracking.fromweb;
002. 
003.import android.app.IntentService;
004.import android.app.Notification;
005.import android.app.NotificationManager;
006.import android.content.Context;
007.import android.content.Intent;
008.import android.os.PowerManager;
009.import android.support.v4.app.NotificationCompat;
010.import android.text.TextUtils;
011.import android.util.Log;
012.import android.widget.Toast;
013. 
014.import com.google.android.gms.location.Geofence;
015.import com.google.android.gms.location.GeofencingEvent;
016. 
017.import java.util.List;
018. 
019. 
020.public class GeofenceIntentService extends IntentService  {
021.    private final String TAG = this.getClass().getCanonicalName();
022. 
023.    public GeofenceIntentService() {
024.        super("GeofenceIntentService");
025.        Log.v(TAG, "Constructor.");
026.    }
027. 
028.    public void onCreate() {
029.        super.onCreate();
030.        Log.v(TAG, "onCreate");
031.    }
032. 
033.    public void onDestroy() {
034.        super.onDestroy();
035.        Log.v(TAG, "onDestroy");
036.    }
037. 
038.    @Override
039.    protected void onHandleIntent(Intent intent) {
040.        Context not = getApplicationContext();
041.        String nnn = "คุณเดินออกจากคณะ";
042.        int durater = Toast.LENGTH_LONG;
043.        Toast t = Toast.makeText(not, nnn, durater);
044. 
045.        Context inn = getApplicationContext();
046.        String kkk = "คุณเดินเข้าคณะ";
047.        int rrr = Toast.LENGTH_LONG;
048.        Toast g = Toast.makeText(inn, kkk, rrr);
049. 
050.        Context zn = getApplicationContext();
051.        String zz = "คุณอยู่ในคณะ";
052.        int zzz = Toast.LENGTH_LONG;
053.        Toast z = Toast.makeText(zn, zz, zzz);
054. 
055.        GeofencingEvent geofencingEvent = GeofencingEvent.fromIntent(intent);
056.        Log.v(TAG, "onHandleIntent");
057.        if(!geofencingEvent.hasError()) {
058.            int transition = geofencingEvent.getGeofenceTransition();
059.            String notificationTitle;
060. 
061.            switch(transition) {
062.                case Geofence.GEOFENCE_TRANSITION_ENTER:
063.                    notificationTitle = "Geofence Entered";
064.                    Log.v(TAG, "Geofence Entered");
065.                    g.show();
066.                    break;
067.                case Geofence.GEOFENCE_TRANSITION_DWELL:
068.                    notificationTitle = "Geofence Dwell";
069.                    Log.v(TAG, "Dwelling in Geofence");
070.                    z.show();
071.                    break;
072.                case Geofence.GEOFENCE_TRANSITION_EXIT:
073.                    notificationTitle = "Geofence Exit";
074.                    Log.v(TAG, "Geofence Exited");
075.                    t.show();
076.                    break;
077.                default:
078.                    notificationTitle = "Geofence Unknown";
079.            }
080. 
081.            sendNotification(this, getTriggeringGeofences(intent), notificationTitle);
082.        }
083.    }
084. 
085.    private void sendNotification(Context context, String notificationText,
086.                                  String notificationTitle) {
087. 
088.        PowerManager pm = (PowerManager) context
089.                .getSystemService(Context.POWER_SERVICE);
090.        PowerManager.WakeLock wakeLock = pm.newWakeLock(
091.                PowerManager.PARTIAL_WAKE_LOCK, "");
092.        wakeLock.acquire();
093. 
094.        NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(
095.                context)
096.                .setContentTitle(notificationTitle)
097.                .setContentText(notificationText)
098.                .setDefaults(Notification.DEFAULT_ALL)
099.                .setAutoCancel(true);
100. 
101.        NotificationManager notificationManager = (NotificationManager) context
102.                .getSystemService(Context.NOTIFICATION_SERVICE);
103.        notificationManager.notify(1000, notificationBuilder.build());
104. 
105.        wakeLock.release();
106.    }
107. 
108.    private String getTriggeringGeofences(Intent intent) {
109.        GeofencingEvent geofenceEvent = GeofencingEvent.fromIntent(intent);
110.        List<Geofence> geofences = geofenceEvent
111.                .getTriggeringGeofences();
112. 
113.        String[] geofenceIds = new String[geofences.size()];
114. 
115.        for (int i = 0; i < geofences.size(); i++) {
116.            geofenceIds[i] = geofences.get(i).getRequestId();
117.        }
118. 
119.        return TextUtils.join(", ", geofenceIds);
120.    }
121.}




Tag : Mobile, Android, JAVA, Mobile

Move To Hilight (Stock) 
Send To Friend.Bookmark.
Date : 2016-02-14 17:34:45 By : ithikom5004 View : 1454 Reply : 1
 

 

No. 1



โพสกระทู้ ( 74,059 )
บทความ ( 838 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์
Twitter Facebook

ไม่ลอง Debug ดูครับ ว่ามันทำงานในส่วนควรที่จะทำหรือไม่
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2016-02-17 10:09:01 By : mr.win
 

   

ค้นหาข้อมูล


   
 

แสดงความคิดเห็น
Re : สอบถามเกี่ยวกับการเขียน Android Geofencing ครับ รันได้ ไม่มี Error แต่ไม่มีการแจ้งเตือนใดๆ
 
 
รายละเอียด
 
ตัวหนา ตัวเอียง ตัวขีดเส้นใต้ ตัวมีขีดกลาง| ตัวเรืองแสง ตัวมีเงา ตัวอักษรวิ่ง| จัดย่อหน้าอิสระ จัดย่อหน้าชิดซ้าย จัดย่อหน้ากึ่งกลาง จัดย่อหน้าชิดขวา| เส้นขวาง| ขนาดตัวอักษร แบบตัวอักษร
ใส่แฟลช ใส่รูป ใส่ไฮเปอร์ลิ้งค์ ใส่อีเมล์ ใส่ลิ้งค์ FTP| ใส่แถวของตาราง ใส่คอลัมน์ตาราง| ตัวยก ตัวห้อย ตัวพิมพ์ดีด| ใส่โค้ด ใส่การอ้างถึงคำพูด| ใส่ลีสต์
smiley for :lol: smiley for :ken: smiley for :D smiley for :) smiley for ;) smiley for :eek: smiley for :geek: smiley for :roll: smiley for :erm: smiley for :cool: smiley for :blank: smiley for :idea: smiley for :ehh: smiley for :aargh: smiley for :evil:
Insert PHP Code
Insert ASP Code
Insert VB.NET Code Insert C#.NET Code Insert JavaScript Code Insert C#.NET Code
Insert Java Code
Insert Android Code
Insert Objective-C Code
Insert XML Code
Insert SQL Code
Insert Code
เพื่อความเรียบร้อยของข้อความ ควรจัดรูปแบบให้พอดีกับขนาดของหน้าจอ เพื่อง่ายต่อการอ่านและสบายตา และตรวจสอบภาษาไทยให้ถูกต้อง

อัพโหลดแทรกรูปภาพ

Notice

เพื่อความปลอดภัยของเว็บบอร์ด ไม่อนุญาติให้แทรก แท็ก [img]....[/img] โดยการอัพโหลดไฟล์รูปจากที่อื่น เช่นเว็บไซต์ ฟรีอัพโหลดต่าง ๆ
อัพโหลดแทรกรูปภาพ ให้ใช้บริการอัพโหลดไฟล์ของไทยครีเอท และตัดรูปภาพให้พอดีกับสกรีน เพื่อความโหลดเร็วและไฟล์ไม่ถูกลบทิ้ง

   
  เพื่อความปลอดภัยและการตรวจสอบ กระทู้ที่แทรกไฟล์อัพโหลดไฟล์จากที่อื่น อาจจะถูกลบทิ้ง
 
โดย
อีเมล์
บวกค่าให้ถูก
<= ตัวเลขฮินดูอารบิก เช่น 123 (หรือล็อกอินเข้าระบบสมาชิกเพื่อไม่ต้องกรอก)





ThaiCreate.Com Logo
© www.ThaiCreate.Com. 2003-2025 All Rights Reserved.
ไทยครีเอทบริการ จัดทำดูแลแก้ไข Web Application ทุกรูปแบบ (PHP, .Net Application, VB.Net, C#)
[Conditions Privacy Statement] ติดต่อโฆษณา 081-987-6107 อัตราราคา คลิกที่นี่