I need to implement something similar to Gmail's transition. I know the toolbar is a shared transition animation. I was wondering how can I implement the bottom half of the view (under the toolbar)? What kind of transition is it? Posted: 14 Jan 2020 03:56 AM PST |
I want to know, What is this Android Player SDK name? Which Player is this that the app is using to stream hls videos. Anyone have any idea? Posted: 13 Jan 2020 10:39 PM PST |
Replacement for Spoon or an update on Project Nitrogen Posted: 14 Jan 2020 08:18 AM PST I'm looking for a replacement for Spoon (an Android testing framework that runs espresso tests and builds a static website which can show the results of the tests along with screen shots and device information). Spoon is great but is no longer being maintained. In 2018 Google announced something called Project Nitrogen which seemed to be an overall umbrella for Android testing which would include the Spoon functionality among other things. But it seems the project has gone dark. Does anybody know the status of Nitrogen? Or can anyone suggest a replacement for Spoon that is being maintained? Links would be great. Thanks. submitted by /u/androidguy211 [link] [comments] |
RxJava to coroutines: end-to-end feature migration Posted: 13 Jan 2020 11:59 AM PST |
Help: ClashBasePedia app : Violation of Google Play policy - even if it complies with the Clash Of Clans fan-content-policy Posted: 14 Jan 2020 12:45 AM PST | Hello, my app ClashBasepedia (https://play.google.com/store/apps/details?id=com.clashbasepedia) is a guide app for 'Clash Of Clans' game community where player can upload their bases(layouts) and discuss attack and defense strategies for the game. The app is doing very well and its receiving very good feedback from the players and its even used by big content creators on YouTube. It's free and it currently has about 20.000 user per day. The app is about 7 months old and had no problems or rejections until I made an update a few days ago (bug fixes, no important UI changes). After the update i received a mail from google support saying : Publishing status: Rejected Issue: Violation of Google Play policy Google reserves the discretion to include or remove apps from Google Play. We may take action based on a number of factors including, but not limited to, a pattern of harmful behavior or high risk of abuse. We identify risk of abuse using various items such as previous violation history, user feedback, and use of popular brands, characters, and other assets. I have made an appeal using the form at google where i said the following: ----------------- Hello, immediately after an update release of our app we have receive a rejection notice. We are very careful with the Google Play policy but it may be something that we overlooked and we are not sure exactly what we did wrong and why our update was considered a violation. Here are the reasons presented in the email : - previous violation history We did not have any previous violations - user feedback We have a rating of 4.567 from more then 2000 ratings, with +90% positive feedback - use of popular brands, characters, and other assets We are an app to help the players of the 'Clash of clans' game. We only use the images/assets/rights provided by Supercell (owner of the Clash Of Clans game) via the Fan Kit Content Policy https://supercell.com/en/fan-content-policy/ - here, in the official forum post you can also find the official link to the assets provided by Supercell : : https://forum.supercell.com/showthread.php/1818329 Also at the end of our app description we specify a Disclaimer. ------------------ After a few days i have received a response : Status: Clash Base Pedia (with links) Pro 2020 (com.clashbasepedia) not available on Google Play. https://preview.redd.it/dur9hfluhpa41.png?width=1098&format=png&auto=webp&s=3799afdcda31e00b95a30e5cf66e1e17fd84de30 This replay clearly seems like its been auto-generated by a robot or Lewis (the name in signature) did not even bothered to read my mail or read the Supercell fan-content-policy. Supercell fan-content-policy clearly specifies: This Fan Content Policy governs your use of Supercell Oy's ("Supercell") copyrights and trademarks from Clash of Clans, Clash Royale, Hay Day, Brawl Stars and Boom Beach, including any related fan kits provided by us ("Supercell Assets") for Fan Content purposes. Permitted Fan Content normally includes for example non-commercial fan-generated online guides and guide apps, fan meetups, fan pages and gameplay videos as long as they follow this Policy. Please help me because I'm not sure how to proceed next. I have worked on this app for more then one year and now I risk losing all even though i have done nothing wrong and tried to be very careful. submitted by /u/Pushkutza [link] [comments] | |
Storing User Pins in App Posted: 13 Jan 2020 09:18 PM PST Hello. I am making a time sheet app and I would like to make it so that each employee had a pin they enter before they can modify a time record. So I have been researching how to store pins. I have come across 3 ways to store credentials in android. Shared Preferences, Account Manager and Server Authentication. I wont have a server, so cant do Server Authentication. Account manager seems inappropriate in this case. Considering the pin is not too important, I happy to just store a hash in shared preferences or my room database (along with other employee details). Is there a better way to store the pin and is there any difference in storing the hash in shared preferences vs a room database? Apologies if this violates Rule 2. Thanks in advance. submitted by /u/novaorionWasHere [link] [comments] |
Android Custom View 102 (Part 4) Posted: 14 Jan 2020 02:45 AM PST |
Student trying to create a smartwatch app. Help! Posted: 14 Jan 2020 08:41 AM PST I am currently a student trying to work out a smartwatch app for my own. I have no experience in using android developer AT ALL but I am lately starting to learn it. I would like to create an app that could 1) get data straight from the smartwatch and into the smartwatch app 2) store all the data and retrieve it at certain times when using the app 3) send text messages to someone else via the smartwatch app Would I be able to create a smartwatch app like this? I would really appreciate it if you guys could give me things to look at which could help me in this small app that I am doing. I am super new with android dev. would really appreciate all the help and guidance. Thank you in advance! submitted by /u/98032210 [link] [comments] |
[HELP] App that gets current location and displays it on a map (Java) Posted: 14 Jan 2020 08:21 AM PST Hi guys, I'm trying to develop this app without using Google API, but only Location, LocationManager and at most LocationProvider / Geocoder classes. Have you got any tips? Or did you do something like that that you can send me? Or at least something already online that I can look up to? Thanks in advance! submitted by /u/iconic14 [link] [comments] |
Commonsware, where to start? Posted: 14 Jan 2020 07:31 AM PST ok, so i've tried Big Nerd Ranch, and i was reading the 3rd edition and its a bit outdated (doesnt have room for databases or android jetpack etc.), all of the new things came in the 4th edition which is in Kotlin but i want to learn it in Java so i thought of moving to commonsware book series. And its a bit confusing on the website, there are tons of books, and they are divided into first-Gen android development and then another 4 books in second-gen android development. Why are they divided and Which book do i start with? submitted by /u/Alexander_Bourne [link] [comments] |
InMobi won't make payment of our last 4 months ad earnings Posted: 14 Jan 2020 06:27 AM PST I have contacted with them several times and they always say they are sorry and they postpone the payment date everytime when I ask. I wanted to share the problem and let other devs know about it. Also it would help to know if there are other devs who are not getting their earnings from InMobi like us. submitted by /u/ttscc [link] [comments] |
Android Studios - Find nearby places method Posted: 14 Jan 2020 06:26 AM PST I've created a GPS-app, which shows my current location on a map on a Android Emulator via Android Studios. Now, as the title mentions, I've been trying to get the nearby places to work for a really long time now, without any success. As it seems, most of the video's and guides I've looked at has been updated, and I really don't know what to do. This is how my app currently looks like: Application Image I've created a button to locate all the resturants, since I have to start somewhere. I've created the API-key and enabled billing for places. I've fetched the demo api and created a model from it with different Pojo classes, such as Geometry, Location, MyPlaces, Photos, Results, etc. These contains methods that can be used to get information from the locations. Now I need to create a method called something like nearByPlace();, but I don't know how to implement it correctly, and this is what I need a bit of help with. This is what my MapActivity looks like: public class MapActivity extends AppCompatActivity implements OnMapReadyCallback { private GoogleMap mMap; private FusedLocationProviderClient mFusedLocationProviderClient; private PlacesClient placesClient; private List<AutocompletePrediction> predictionList; private Location mLastKnownLocation; private LocationCallback locationCallback; private MaterialSearchBar materialSearchBar; private View mapView; private Button btnFind; private RippleBackground rippleBg; private final float DEFAULT_ZOOM = 15; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_map); materialSearchBar = findViewById(R.id.searchBar); btnFind = findViewById(R.id.btn_find); rippleBg = findViewById(R.id.ripple_bg); SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map); mapFragment.getMapAsync(this); mapView = mapFragment.getView(); mFusedLocationProviderClient = LocationServices.getFusedLocationProviderClient(MapActivity.this); Places.initialize(MapActivity.this, getString(R.string.google_maps_api)); placesClient = Places.createClient(this); final AutocompleteSessionToken token = AutocompleteSessionToken.newInstance(); materialSearchBar.setOnSearchActionListener(new MaterialSearchBar.OnSearchActionListener() { @Override public void onSearchStateChanged(boolean enabled) { } @Override public void onSearchConfirmed(CharSequence text) { startSearch(text.toString(), true, null, true); } @Override public void onButtonClicked(int buttonCode) { if (buttonCode == MaterialSearchBar.BUTTON_NAVIGATION) { //opening or closing a navigation drawer } else if (buttonCode == MaterialSearchBar.BUTTON_BACK) { materialSearchBar.disableSearch(); } } }); materialSearchBar.addTextChangeListener(new TextWatcher() { @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { } @Override public void onTextChanged(CharSequence s, int start, int before, int count) { FindAutocompletePredictionsRequest predictionsRequest = FindAutocompletePredictionsRequest.builder() .setTypeFilter(TypeFilter.ADDRESS) .setSessionToken(token) .setQuery(s.toString()) .build(); placesClient.findAutocompletePredictions(predictionsRequest).addOnCompleteListener(new OnCompleteListener<FindAutocompletePredictionsResponse>() { @Override public void onComplete(@NonNull Task<FindAutocompletePredictionsResponse> task) { if (task.isSuccessful()) { FindAutocompletePredictionsResponse predictionsResponse = task.getResult(); if (predictionsResponse != null) { predictionList = predictionsResponse.getAutocompletePredictions(); List<String> suggestionsList = new ArrayList<>(); for (int i = 0; i < predictionList.size(); i++) { AutocompletePrediction prediction = predictionList.get(i); suggestionsList.add(prediction.getFullText(null).toString()); } materialSearchBar.updateLastSuggestions(suggestionsList); if (!materialSearchBar.isSuggestionsVisible()) { materialSearchBar.showSuggestionsList(); } } } else { Log.i("mytag", "prediction fetching task unsuccessful"); } } }); } @Override public void afterTextChanged(Editable s) { } }); materialSearchBar.setSuggstionsClickListener(new SuggestionsAdapter.OnItemViewClickListener() { @Override public void OnItemClickListener(int position, View v) { if (position >= predictionList.size()) { return; } AutocompletePrediction selectedPrediction = predictionList.get(position); String suggestion = materialSearchBar.getLastSuggestions().get(position).toString(); materialSearchBar.setText(suggestion); new Handler().postDelayed(new Runnable() { @Override public void run() { materialSearchBar.clearSuggestions(); } }, 1000); InputMethodManager imm = (InputMethodManager) getSystemService(INPUT_METHOD_SERVICE); if (imm != null) imm.hideSoftInputFromWindow(materialSearchBar.getWindowToken(), InputMethodManager.HIDE_IMPLICIT_ONLY); final String placeId = selectedPrediction.getPlaceId(); List<Place.Field> placeFields = Arrays.asList(Place.Field.LAT_LNG); FetchPlaceRequest fetchPlaceRequest = FetchPlaceRequest.builder(placeId, placeFields).build(); placesClient.fetchPlace(fetchPlaceRequest).addOnSuccessListener(new OnSuccessListener<FetchPlaceResponse>() { @Override public void onSuccess(FetchPlaceResponse fetchPlaceResponse) { Place place = fetchPlaceResponse.getPlace(); Log.i("mytag", "Place found: " + place.getName()); LatLng latLngOfPlace = place.getLatLng(); if (latLngOfPlace != null) { mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(latLngOfPlace, DEFAULT_ZOOM)); } } }).addOnFailureListener(new OnFailureListener() { @Override public void onFailure(@NonNull Exception e) { if (e instanceof ApiException) { ApiException apiException = (ApiException) e; apiException.printStackTrace(); int statusCode = apiException.getStatusCode(); Log.i("mytag", "place not found: " + e.getMessage()); Log.i("mytag", "status code: " + statusCode); } } }); } @Override public void OnItemDeleteListener(int position, View v) { } }); btnFind.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { LatLng currentMarkerLocation = mMap.getCameraPosition().target; rippleBg.startRippleAnimation(); new Handler().postDelayed(new Runnable() { @Override public void run() { rippleBg.stopRippleAnimation(); startActivity(new Intent(MapActivity.this, PermissionsActivity.class)); finish(); } }, 3000); } }); } @SuppressLint("MissingPermission") @Override public void onMapReady(GoogleMap googleMap) { mMap = googleMap; mMap.setMyLocationEnabled(true); mMap.getUiSettings().setMyLocationButtonEnabled(true); if (mapView != null && mapView.findViewById(Integer.parseInt("1")) != null) { View locationButton = ((View) mapView.findViewById(Integer.parseInt("1")).getParent()).findViewById(Integer.parseInt("2")); RelativeLayout.LayoutParams layoutParams = (RelativeLayout.LayoutParams) locationButton.getLayoutParams(); layoutParams.addRule(RelativeLayout.ALIGN_PARENT_TOP, 0); layoutParams.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM, RelativeLayout.TRUE); layoutParams.setMargins(0, 0, 40, 180); } //check if gps is enabled or not and then request user to enable it LocationRequest locationRequest = LocationRequest.create(); locationRequest.setInterval(10000); locationRequest.setFastestInterval(5000); locationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY); LocationSettingsRequest.Builder builder = new LocationSettingsRequest.Builder().addLocationRequest(locationRequest); SettingsClient settingsClient = LocationServices.getSettingsClient(MapActivity.this); Task<LocationSettingsResponse> task = settingsClient.checkLocationSettings(builder.build()); task.addOnSuccessListener(MapActivity.this, new OnSuccessListener<LocationSettingsResponse>() { @Override public void onSuccess(LocationSettingsResponse locationSettingsResponse) { getDeviceLocation(); } }); task.addOnFailureListener(MapActivity.this, new OnFailureListener() { @Override public void onFailure(@NonNull Exception e) { if (e instanceof ResolvableApiException) { ResolvableApiException resolvable = (ResolvableApiException) e; try { resolvable.startResolutionForResult(MapActivity.this, 51); } catch (IntentSender.SendIntentException e1) { e1.printStackTrace(); } } } }); mMap.setOnMyLocationButtonClickListener(new GoogleMap.OnMyLocationButtonClickListener() { @Override public boolean onMyLocationButtonClick() { if (materialSearchBar.isSuggestionsVisible()) materialSearchBar.clearSuggestions(); if (materialSearchBar.isSearchEnabled()) materialSearchBar.disableSearch(); return false; } }); } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if (requestCode == 51) { if (resultCode == RESULT_OK) { getDeviceLocation(); } } } @SuppressLint("MissingPermission") private void getDeviceLocation() { mFusedLocationProviderClient.getLastLocation() .addOnCompleteListener(new OnCompleteListener<Location>() { @Override public void onComplete(@NonNull Task<Location> task) { if (task.isSuccessful()) { mLastKnownLocation = task.getResult(); if (mLastKnownLocation != null) { mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(mLastKnownLocation.getLatitude(), mLastKnownLocation.getLongitude()), DEFAULT_ZOOM)); } else { final LocationRequest locationRequest = LocationRequest.create(); locationRequest.setInterval(10000); locationRequest.setFastestInterval(5000); locationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY); locationCallback = new LocationCallback() { @Override public void onLocationResult(LocationResult locationResult) { super.onLocationResult(locationResult); if (locationResult == null) { return; } mLastKnownLocation = locationResult.getLastLocation(); mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(mLastKnownLocation.getLatitude(), mLastKnownLocation.getLongitude()), DEFAULT_ZOOM)); mFusedLocationProviderClient.removeLocationUpdates(locationCallback); } }; mFusedLocationProviderClient.requestLocationUpdates(locationRequest, locationCallback, null); } } else { Toast.makeText(MapActivity.this, "unable to get last location", Toast.LENGTH_SHORT).show(); } } }); } } I'd be really grateful if I could get some pointers and help with how to get this to work :) submitted by /u/gxldenhalos [link] [comments] |
Running Android Emulator together with a VirtualBox machine Posted: 14 Jan 2020 06:24 AM PST I'm on Windows and need to run a Linux VM. If I disable Windows Hypervisor Platform, the VM works, but the emulator doesn't (other than arm images, I believe, but I haven't tested those). VirtualBox seems to have some recent support for this, but the latest Windows update broke it as per this thread. Is there a way to do this without relying on arm images? Any ideas would be appreciated, as I've already sunk way too much time on this. submitted by /u/Ferreira1 [link] [comments] |
How often do you perform code reviews? Posted: 14 Jan 2020 05:23 AM PST I'm stuck trying to strike a balance between quickly/occasionally adding new features and ensuring I write quality code. How often do you perform code reviews for personal projects? I like to add new features during the week and perform code reviews during the weekend. submitted by /u/murray1029 [link] [comments] |
View Binding docs updated with info on fragment usage Posted: 13 Jan 2020 11:17 AM PST https://developer.android.com/topic/libraries/view-binding#fragments I don't understand two things. - What's with this pattern of `_binding` and having another `binding` (without the leading `_`). Why not just have `binding`? Is there something I'm missing here. Maybe this is because of the !!
- Why do we need to do this? In every fragment? Is there a way to make this less painful? I can almost guarantee that the 30 fragments I use in my app do not do this. What's the issue?
@Override fun onDestroyView() { _binding = null } submitted by /u/leggo_tech [link] [comments] |
Finding an app developer Posted: 14 Jan 2020 04:31 AM PST Sorry if this has been asked previously. How to find an app developer that builds cheap games? Android & iOs I'm based in Australia. submitted by /u/hyrola [link] [comments] |
Create website for your mobile app in minutes! Posted: 14 Jan 2020 05:35 AM PST Hello! I make Android and iOS apps. I also make Android Studio tutorials on YouTube. Today I released a little different tutorial that might be helpful for a lot of Android developers and a lot of other people. In the video I'm using a program called Mobirise to create simple website litterally in minutes. You can use the program to create promo website for you, for your company, for your app, or whatever you want. In the end you can export the website and upload it on your own hosting. The program is free and also you don't need to use their domain like other website builders. You just export the website files like you can see in the video. Also this is not a paid review, I just really like the program and you can see in the video description my website created with the app. Enjoy! https://www.youtube.com/watch?v=41kowpQevwE submitted by /u/yo_asakura [link] [comments] |
Firebase doesn't load fast enough Posted: 13 Jan 2020 08:33 PM PST Sometimes when I'm uploading data to firebase or retrieving something, I get partial data which causes the wrong info to be displayed in my app. For instance: (1) I was retrieving text from TextViews in a form and saving it to firebase. But ONLY two fields were added. I deleted it manually and did it OVER again and it worked properly the second time. (2) When I'm loading data from the firebase and populating my adapter, sometimes it just shows the default adapter layout WITHOUT any data retrieved from the firebase. If I refresh it, then it works properly. Not sure what's going on, seems like background task isn't fast enough for the UI? Any pointers? (1) Pushing to firebase // DEFINING THE FUNCTION public void pushToFirebase(String createdBy, String Date, String Description, String Image, String Location, String Name, String Password, String Time, String uid){ Firebase reference = new Firebase("https://.../events"); // Generate a UID String key = reference.push().getKey(); // Set parent UID reference.child(key).setValue(key); // Push child references reference.child(key).child("CreatedBy").setValue(createdBy); // Name of owner reference.child(key).child("Date").setValue(Date); reference.child(key).child("Location").setValue(Location); reference.child(key).child("Name").setValue(Name); // name of Event reference.child(key).child("Password").setValue(Password); ... (6 more fields) } // CALLING THE FUNCTION button.setOnClickListener((v) -> { pushToFirebase(User.fullName, displayDateButton.getText().toString(), eventDescription.getText().toString(), User.bitmap, eventLocation.getText().toString(), eventName.getText().toString(), eventPassword.getText().toString(), displayTimeButton.getText().toString(), User.uid); }); submitted by /u/ssadman000 [link] [comments] |
MIT App Inventor Posted: 14 Jan 2020 03:51 AM PST Hey, Anyone who's expert with MIT App Inventor? I need help with the blocks and connecting with PHP queries through URL, I already have the PHP script, but I'm running into problem when connecting with it. Thanks 🙏 submitted by /u/ZenSanchez119 [link] [comments] |
Configure Firebase project for Continuous Integration builds Posted: 13 Jan 2020 06:49 PM PST |
Email offering fake reviews Posted: 13 Jan 2020 02:32 PM PST |
Medical App - what should I know Posted: 13 Jan 2020 12:43 PM PST Hello friends! first post here. I'm an aspiring flutter developer. I have an idea for an diabetes app, which help you with your day-to-day dosis. I've made a couple of apps, but never submitted one to the store. In order to publish it to the store.. do I need some medical credentials? or something related? or a doctor approval? if an user get sick/ill/whatever because of the use of my app... what would happen? am I responsable? (The app would suggest you small changes in your dosis). I see a lot of news about "this kid did this app to help whatever illness", are they responsible if something fucks up? I would like to know that kind of things before I start with the design. Is there any place where I can read that kind of info? Or do you know about it? Thank you for your time! submitted by /u/Nauzet [link] [comments] |
No comments:
Post a Comment