alebarreto / firebaseandroidchat Goto Github PK
View Code? Open in Web Editor NEWChat with features : Login with Google | Send Photo Camera | Send Photo Gallery | Send Location
Chat with features : Login with Google | Send Photo Camera | Send Photo Gallery | Send Location
even though I changed to this My own API key when I try sending location, the google map with the pin appears briefly and then closes, nothing is sent through the app. messages and photos are sent fine as expected. is this something wrong with the app or is it a google API key proble?
like the title says, if you have done it, can you send me your source code.
Error:Execution failed for task ':app:processDebugGoogleServices'.
File google-services.json is missing. The Google Services Plugin cannot function without it.
Searched Location:
D:\xxx\FirebaseAndroidChat\app\src\debug\google-services.json
D:\xxx\FirebaseAndroidChat\app\google-services.json
I really enjoyed it.
But there are some problems.
During the chat, the 'Send' & Emoticon button is not pressed.
The app stops when you load a photo from the gallery. However It is well stored in the Firebase repository.
Error :
NullPointerException: Attempt to invoke virtual method com.google.firebase.database.DatabaseReference com.google.firebase.database.DatabaseReference.child(java.lang.String)' on a null object reference
I want to know what rules Firebase used.
👍 👍 👍
Hi,
where i can find the URL_STORAGE_REFERENCE to fill the correct value.
thanks
W/DynamiteModule(18632): Local module descriptor class for providerinstaller not found.
I/DynamiteModule(18632): Considering local module providerinstaller:0 and remote module providerinstaller:0
W/ProviderInstaller(18632): Failed to load providerinstaller module: No acceptable module found. Local version is 0 and remote version is 0.
import com.google.firebase.auth.FirebaseUser;
I'm learning firebase, but I have another question.
Can you tell me how your preview picture was made? Thank you!
Your preview looks cool.
After pressing sign in button and choosing email, it does not show homepage etc. Please help @AleBarreto
Error:Error: File path too long on Windows, keep below 240 characters : C:\Users\StartappzKE\Documents\AndroidStudioProjects\chatJavasoft\app\build\intermediates\exploded-aar\hani.momanii.supernova_emoji_library\supernova-emoji-library\0.0.2\res\drawable-nodpi-v4\emoji_1f469_200d_2764_fe0f_200d_1f48b_200d_1f469.png
The image was successfuly sent to firebase (both from gallery and camera) but cant display on UI.
the location appear in a second then disapear.
Any solution? thx a bunch
i keep getting this error along with this log from LoginActivity: Google Sign In failed. I have downloaded google-services.json file and also enabled google authentication in firebase console. Please help me out..
why i can not apply this library?
FATAL EXCEPTION: main
Process: com.keytoisro.gatemechanicalengineering, PID: 2728
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.keytoisro.gatemechanicalengineering/com.keytoisro.gatemechanicalengineering.ChatMainActivity}: java.lang.NullPointerException
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2429)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2493)
at android.app.ActivityThread.access$800(ActivityThread.java:166)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1283)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5584)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1268)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1084)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.NullPointerException
at com.keytoisro.gatemechanicalengineering.ChatMainActivity.verificaUsuarioLogado(ChatMainActivity.java:335)
at com.keytoisro.gatemechanicalengineering.ChatMainActivity.onCreate(ChatMainActivity.java:95)
at android.app.Activity.performCreate(Activity.java:5447)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1094)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2393)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2493)
at android.app.ActivityThread.access$800(ActivityThread.java:166)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1283)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5584)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1268)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1084)
at dalvik.system.NativeStart.main(Native Method)
10-06 08:23:44.895 2728-2783/com.keytoisro.gatemechanicalengineering W/DynamiteModule: Local module descriptor class for com.google.firebase.auth not found.
FATAL EXCEPTION: main
Process: alessandro.firebaseandroid, PID: 13440
java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=1, result=-1, data=Intent { dat=content://media/external/images/media/4879 flg=0x1 (has extras) }} to activity {alessandro.firebaseandroid/alessandro.firebaseandroid.MainActivity}: java.lang.IllegalArgumentException: The supplied bucketname is not available to this project.
at android.app.ActivityThread.deliverResults(ActivityThread.java:4920)
at android.app.ActivityThread.handleSendResult(ActivityThread.java:4963)
at android.app.ActivityThread.access$1600(ActivityThread.java:221)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1848)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:158)
at android.app.ActivityThread.main(ActivityThread.java:7224)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120)
at de.robv.android.xposed.XposedBridge.main(XposedBridge.java:133)
Caused by: java.lang.IllegalArgumentException: The supplied bucketname is not available to this project.
at com.google.android.gms.common.internal.zzab.zzb(Unknown Source)
at com.google.firebase.storage.FirebaseStorage.zzx(Unknown Source)
at com.google.firebase.storage.FirebaseStorage.getReferenceFromUrl(Unknown Source)
at alessandro.firebaseandroid.MainActivity.onActivityResult(MainActivity.java:104)
at android.app.Activity.dispatchActivityResult(Activity.java:7137)
at android.app.ActivityThread.deliverResults(ActivityThread.java:4916)
at android.app.ActivityThread.handleSendResult(ActivityThread.java:4963)
at android.app.ActivityThread.access$1600(ActivityThread.java:221)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1848)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:158)
at android.app.ActivityThread.main(ActivityThread.java:7224)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120)
at de.robv.android.xposed.XposedBridge.main(XposedBridge.java:133)
I get the following errors
07-18 00:21:19.849 10083-10098/alessandro.firebaseandroid W/DynamiteModule: Local module descriptor class for com.google.firebase.auth not found.
07-18 00:23:39.641 10083-10083/alessandro.firebaseandroid D/AutoManageHelper: onStart true {0=com.google.android.gms.internal.zzpp$zza@ea2b4a8}
07-18 00:23:43.728 10083-10083/alessandro.firebaseandroid E/LoginActivity: Google Sign In failed.
07-18 00:23:52.770 10083-12390/alessandro.firebaseandroid I/FA: Tag Manager is not found and thus will not be used
How to change the code?
I figure it out.
Go to https://developers.google.com/maps/documentation/maps-static/intro.
Grab a Key with Enabled API's: https://console.cloud.google.com/home/dashboard.
Add no restrictions or use only for Android SDK.
Changes to the MainActivity.java:
...public class MainActivity extends AppCompatActivity ... {
LocationTrack locationTrack; // NEW HERE
...
// Location Permissions // NEW HERE
private static final int REQUEST_LOCATION = 3;
private static String[] PERMISSIONS_LOCATION = {
android.Manifest.permission.ACCESS_FINE_LOCATION,
android.Manifest.permission.ACCESS_COARSE_LOCATION
};
...
protected void onCreate(Bundle savedInstanceState) {
...
locationTrack = new LocationTrack(MainActivity.this); // NEW HERE
...
}
// DELETE OR COMMENT OUT ALL INSIDE
else if (requestCode == PLACE_PICKER_REQUEST) {
if (resultCode == RESULT_OK) {
.... // REMOVE ALL INSIDE HERE
}
}
...
public boolean onOptionsItemSelected(MenuItem item) { ...
...
// NEW HERE UNDER STORAGE
case R.id.sendLocation:
verifyLocationPermissions();
//locationPlacesIntent();
break;
...
}
...
private void locationPlacesIntent(){
/* COMMENT THIS OUT - DEPRECATED
try {
PlacePicker.IntentBuilder builder = new PlacePicker.IntentBuilder();
startActivityForResult(builder.build(this), PLACE_PICKER_REQUEST);
} catch (GooglePlayServicesRepairableException | GooglePlayServicesNotAvailableException e) {
e.printStackTrace();
}
*/ END COMMENT
// NEW HERE - BELOW
locationTrack = new LocationTrack(MainActivity.this);
if (locationTrack.canGetLocation()) {
double longitude = locationTrack.getLongitude();
double latitude = locationTrack.getLatitude();
Toast.makeText(getApplicationContext(), "Longitude:" + Double.toString(longitude) + "\nLatitude:" + Double.toString(latitude), Toast.LENGTH_SHORT).show();
MapModel mapModel = new MapModel(latitude +"", longitude +"");
ChatModel chatModel = new ChatModel(userModel,Calendar.getInstance().getTime().getTime()+"",mapModel);
mFirebaseDatabaseReference.child(CHAT_REFERENCE).push().setValue(chatModel);
} else {
//locationTrack.showSettingsAlert();
Toast.makeText(getApplicationContext(),"Greška!", Toast.LENGTH_SHORT).show();
}
}
.....
}
...
// NEW HERE - BELOW
public void verifyLocationPermissions() {
// Check if we have write permission
int permission = ActivityCompat.checkSelfPermission(MainActivity.this, android.Manifest.permission.ACCESS_FINE_LOCATION);
if (permission != PackageManager.PERMISSION_GRANTED) {
// We don't have permission so prompt the user
ActivityCompat.requestPermissions(
MainActivity.this,
PERMISSIONS_LOCATION,
REQUEST_LOCATION
);
}else{
// we already have permission, lets go ahead and call camera intent
locationPlacesIntent();
}
}
} // END OF public class MainActivity
Create new file LocationTrack.java:
package alessandro.firebaseandroid;
import android.Manifest;
import android.app.AlertDialog;
import android.app.Service;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.os.Bundle;
import android.os.IBinder;
import android.provider.Settings;
import android.support.v4.app.ActivityCompat;
import android.widget.Toast;
public class LocationTrack extends Service implements LocationListener {
private final Context mContext;
boolean checkGPS = false;
boolean checkNetwork = false;
boolean canGetLocation = false;
Location loc;
double latitude;
double longitude;
private static final long MIN_DISTANCE_CHANGE_FOR_UPDATES = 10;
private static final long MIN_TIME_BW_UPDATES = 1000 * 60 * 1;
protected LocationManager locationManager;
public LocationTrack(Context mContext) {
this.mContext = mContext;
getLocation();
}
private Location getLocation() {
try {
locationManager = (LocationManager) mContext
.getSystemService(LOCATION_SERVICE);
// get GPS status
checkGPS = locationManager
.isProviderEnabled(LocationManager.GPS_PROVIDER);
// get network provider status
checkNetwork = locationManager
.isProviderEnabled(LocationManager.NETWORK_PROVIDER);
if (!checkGPS && !checkNetwork) {
Toast.makeText(mContext, "No Service Provider is available", Toast.LENGTH_SHORT).show();
} else {
this.canGetLocation = true;
// if GPS Enabled get lat/long using GPS Services
if (checkGPS) {
if (ActivityCompat.checkSelfPermission(mContext, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(mContext, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
// TODO: Consider calling
// ActivityCompat#requestPermissions
// here to request the missing permissions, and then overriding
// public void onRequestPermissionsResult(int requestCode, String[] permissions,
// int[] grantResults)
// to handle the case where the user grants the permission. See the documentation
// for ActivityCompat#requestPermissions for more details.
}
locationManager.requestLocationUpdates(
LocationManager.GPS_PROVIDER,
MIN_TIME_BW_UPDATES,
MIN_DISTANCE_CHANGE_FOR_UPDATES, this);
if (locationManager != null) {
loc = locationManager
.getLastKnownLocation(LocationManager.GPS_PROVIDER);
if (loc != null) {
latitude = loc.getLatitude();
longitude = loc.getLongitude();
}
}
}
/*if (checkNetwork) {
if (ActivityCompat.checkSelfPermission(mContext, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(mContext, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
// TODO: Consider calling
// ActivityCompat#requestPermissions
// here to request the missing permissions, and then overriding
// public void onRequestPermissionsResult(int requestCode, String[] permissions,
// int[] grantResults)
// to handle the case where the user grants the permission. See the documentation
// for ActivityCompat#requestPermissions for more details.
}
locationManager.requestLocationUpdates(
LocationManager.NETWORK_PROVIDER,
MIN_TIME_BW_UPDATES,
MIN_DISTANCE_CHANGE_FOR_UPDATES, this);
if (locationManager != null) {
loc = locationManager
.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
}
if (loc != null) {
latitude = loc.getLatitude();
longitude = loc.getLongitude();
}
}*/
}
} catch (Exception e) {
e.printStackTrace();
}
return loc;
}
public double getLongitude() {
if (loc != null) {
longitude = loc.getLongitude();
}
return longitude;
}
public double getLatitude() {
if (loc != null) {
latitude = loc.getLatitude();
}
return latitude;
}
public boolean canGetLocation() {
return this.canGetLocation;
}
public void showSettingsAlert() {
AlertDialog.Builder alertDialog = new AlertDialog.Builder(mContext);
alertDialog.setTitle("GPS is not Enabled!");
alertDialog.setMessage("Do you want to turn on GPS?");
alertDialog.setPositiveButton("Yes", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
Intent intent = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS);
mContext.startActivity(intent);
}
});
alertDialog.setNegativeButton("No", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
dialog.cancel();
}
});
alertDialog.show();
}
public void stopListener() {
if (locationManager != null) {
if (ActivityCompat.checkSelfPermission(mContext, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(mContext, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
// TODO: Consider calling
// ActivityCompat#requestPermissions
// here to request the missing permissions, and then overriding
// public void onRequestPermissionsResult(int requestCode, String[] permissions,
// int[] grantResults)
// to handle the case where the user grants the permission. See the documentation
// for ActivityCompat#requestPermissions for more details.
return;
}
locationManager.removeUpdates(LocationTrack.this);
}
}
@Override
public IBinder onBind(Intent intent) {
return null;
}
@Override
public void onLocationChanged(Location location) {
}
@Override
public void onStatusChanged(String s, int i, Bundle bundle) {
}
@Override
public void onProviderEnabled(String s) {
}
@Override
public void onProviderDisabled(String s) {
}
} // END OF NEW FILE
Full code here: https://www.journaldev.com/13325/android-location-api-tracking-gps
strings.xml
<string name="api_key_google_places">YOUR_API_KEY</string>
app/build.gradle:
//Places SERVICES
implementation 'com.google.android.gms:play-services-places:16.1.0'
implementation 'com.google.android.libraries.places:places:1.1.0'
implementation 'com.google.android.gms:play-services-maps:16.1.0'
implementation 'com.google.android.gms:play-services-location:16.0.0'
Util.java
change this:
return "https://maps.googleapis.com/maps/api/staticmap?center="+latitudeFinal+","+longitudeFinal+"&zoom=18&size=280x280&markers=color:red|"+latitudeFinal+","+longitudeFinal;
to this:
return "https://maps.googleapis.com/maps/api/staticmap?center="+latitudeFinal+","+longitudeFinal+"&zoom=18&size=640x640&maptype=roadmap&key=YOUR_KEY_HERE&markers=color:red|"+latitudeFinal+","+longitudeFinal;
And it works as a charm.
You have a toast and you get image with link - which opens Google Maps application.
In case if needed, take a look here: https://www.journaldev.com/13325/android-location-api-tracking-gps
Working by me here:
https://ibb.co/N7crJNX
https://ibb.co/XJGM4Lh
https://ibb.co/61x1pNC
I can help you to get it working
I am always getting below error:
java.lang.IllegalArgumentException: The storage Uri could not be parsed. When trying to send Image or Location.
StorageReference storageRef = storage.getReferenceFromUrl(Util.URL_STORAGE_REFERENCE).child(Util.FOLDER_STORAGE_IMG);
i m using this code : Initially when i select image from gallery the same image is shown to user sometimes twice , thrice or even 5times . After some interval of time its showing fine why is this happening ?
@OverRide
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if(requestCode == RC_PHOTO_PICKER && resultCode == RESULT_OK)
{
Uri selectedImageUri = data.getData();
Log.d(TAG,"path:"+selectedImageUri.toString());
StorageReference photoReference = mStorageReference.child("images/"+selectedImageUri.getLastPathSegment());
photoReference.putFile(selectedImageUri).addOnSuccessListener(this, new OnSuccessListener<UploadTask.TaskSnapshot>() {
@OverRide
public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
Uri downloadUri = taskSnapshot.getDownloadUrl();
MessageModelClass messageModelClass = new MessageModelClass();
messageModelClass.setImageUrl(downloadUri.toString());
messageModelClass.setmMessage(null);
messageModelClass.setmUserName(userName);
mDatabaseReference.push().setValue(messageModelClass);
//messageAdapter.notifyDataSetChanged();
}
}).addOnFailureListener(this, new OnFailureListener() {
@OverRide
public void onFailure(@nonnull Exception e) {
}
}).addOnCompleteListener(this, new OnCompleteListener<UploadTask.TaskSnapshot>() {
@Override
public void onComplete(@NonNull Task<UploadTask.TaskSnapshot> task) {
messageAdapter.notifyDataSetChanged();
}
});
}
but the last selected image from gallery is shown to the user sometimes twice or thrice ? Why is this happening ?
11-30 11:22:29.106 5465-5873/alessandro.firebaseChat E/StorageException: StorageException has occurred.
An unknown error occurred, please check the HTTP result code and inner exception for server response.
Code: -13000 HttpResult: 400
11-30 11:22:29.106 5465-5873/alessandro.firebaseChat E/StorageException: The server has terminated the upload session
java.io.IOException: The server has terminated the upload session
at com.google.firebase.storage.UploadTask.zzcyp(Unknown Source)
at com.google.firebase.storage.UploadTask.zzcyo(Unknown Source)
at com.google.firebase.storage.UploadTask.run(Unknown Source)
at com.google.firebase.storage.StorageTask$5.run(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
at java.lang.Thread.run(Thread.java:856)
11-30 11:22:29.114 5465-5465/alessandro.firebaseChat E/MainActivity: onFailure sendFileFirebase An unknown error occurred, please check the HTTP result code and inner exception for server response.
Hi, I am configuring the project and has got stuck in figuring out where to get my URL_STORAGE_REFERENCE. It is shown in the documentation that this should be changed. From where can I get mine?
PlacePicker.IntentBuilder immediately close
enabled "Places API for Android" but same result.
When you try to access capture photo from camera an exception is thrown on Android Nougat
Log traces of the exception:-
FATAL EXCEPTION: main
Process: alessandro.firebaseandroid, PID: 8232
android.os.FileUriExposedException: file:///storage/emulated/0/Pictures/2017-03-04_042338camera.jpg exposed beyond app through ClipData.Item.getUri()
at android.os.StrictMode.onFileUriExposed(StrictMode.java:1813)
at android.net.Uri.checkFileUriExposed(Uri.java:2360)
at android.content.ClipData.prepareToLeaveProcess(ClipData.java:832)
at android.content.Intent.prepareToLeaveProcess(Intent.java:8957)
at android.content.Intent.prepareToLeaveProcess(Intent.java:8942)
at android.app.Instrumentation.execStartActivity(Instrumentation.java:1583)
at android.app.Activity.startActivityForResult(Activity.java:4228)
at android.support.v4.app.BaseFragmentActivityJB.startActivityForResult(BaseFragmentActivityJB.java:48)
at android.support.v4.app.FragmentActivity.startActivityForResult(FragmentActivity.java:75)
at android.app.Activity.startActivityForResult(Activity.java:4187)
at android.support.v4.app.FragmentActivity.startActivityForResult(FragmentActivity.java:871)
at alessandro.firebaseandroid.MainActivity.photoCameraIntent(MainActivity.java:288)
at alessandro.firebaseandroid.MainActivity.onOptionsItemSelected(MainActivity.java:163)
at android.app.Activity.onMenuItemSelected(Activity.java:3208)
at android.support.v4.app.FragmentActivity.onMenuItemSelected(FragmentActivity.java:421)
at android.support.v7.app.AppCompatActivity.onMenuItemSelected(AppCompatActivity.java:188)
at android.support.v7.view.WindowCallbackWrapper.onMenuItemSelected(WindowCallbackWrapper.java:103)
at android.support.v7.app.AppCompatDelegateImplV7.onMenuItemSelected(AppCompatDelegateImplV7.java:663)
at android.support.v7.view.menu.MenuBuilder.dispatchMenuItemSelected(MenuBuilder.java:810)
at android.support.v7.view.menu.MenuItemImpl.invoke(MenuItemImpl.java:152)
at android.support.v7.view.menu.MenuBuilder.performItemAction(MenuBuilder.java:957)
at android.support.v7.view.menu.MenuBuilder.performItemAction(MenuBuilder.java:947)
at android.support.v7.view.menu.MenuPopup.onItemClick(MenuPopup.java:126)
at android.widget.AdapterView.performItemClick(AdapterView.java:310)
at android.widget.AbsListView.performItemClick(AbsListView.java:1155)
at android.widget.AbsListView$PerformClick.run(AbsListView.java:3152)
at android.widget.AbsListView$3.run(AbsListView.java:4067)
at android.os.Handler.handleCallback(Handler.java:751)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6123)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:867)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:757)
Hi thank you for this guide
i want to change the JSON FORMA for location message
how can i do it ?
i try to add attribute to LocationModel (String type ) to get this forma
{
"chatmodel":{
"-KLId9H8NBsmrwO6SKEo" : {
"mapModel" : {
"latitude" : "-3.084669",
"longitude" : "-60.010532"
======> "Type": "location"
},
"timeStamp" : "1467060908238",
"userModel" : {
"name" : "Alessandro Barreto",
"photo_profile" : "xxxxxxxxxxxxxxxxxxx"
}
},
...
}
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.