• After 15+ years, we've made a big change: Android Forums is now Early Bird Club. Learn more here.

Bluetooth disconnecting

This morning I was finally able to transfer two files between the Moto Gs Play (sending)/and Pure (receiving). One of them was fairly big. When I tried to send a third file, the Bluetooth option was gone. I made sure it was actually on and went to connections. The Pure showed as an option, but only briefly. Then I went to system settings and cleared Bluetooth cache, but it still didn't work. Should I clear data too, or is something else going on here?

Samsung Fold5-OCTOBER update

Samsung have rolled out the October security update to the U.S.A. unlocked models of the Fold5, F946U1, that also has bugfixes and performance enhancements.

Strangely, the update is F946U1UES1AWI3 which is the same update that the European, F946B, models received last month.

Buying the Pixel 8 or Pixel 8 Pro?

Who is here is buying (or considering) the Pixel 8 or Pixel 8 Pro?

I'm desperate for a new phone since my Galaxy S20 Ultra camera lens is cracked and I can only charge wirelessly due to water damage. Would really prefer to hold out for the next best Galaxy but really kinda need something ASAP (I even considered getting the iPhone 15!).

Curious to hear from those consdering the Pixel 8: what phone do you have now and what's keeping you on the fence?

What does this symbol mean?

Sometimes, not always, when I send a text message a small symbol appears to the left of the text I've sent. It looks to me a bit like an open book inside a circle. I've searched everywhere online and can't find out what it means. Can someone please enlighten me.
I wanted to post a screenshot showing the symbol, but can't work out how to do this as the icon above wants me to input a URL for it.

  • Question Question
Offline Notes App?

Hi all,

I've been looking all over the Android App Store for a Notes App that doesn't need to connect to the Internet.
On my very old Huawei G510-0200 it came with a Notes App that works completely independent from the Internet and this is great. However, it seems like everything wants to connect to the Internet... :(

My Huawei phone link: HUAWEI G510-0200 Specification

Thanks for any help!!!

Want to get involved in game testing?

DOMINUS
EzH15QH5HiMZJQMiUeQ62wofIbArFV4TPBZDoeBJaTK6fkRJZljgcWmgX6cjLzV2uQrTWDyxRqlc71UL34S7RvzSYJm_jL1jZpSrPQSZhQMAG1MwDApn1Tnib2iHRdU37yUGpDL73YdFGUkynAUvplk


Finally a turn-based strategy that works in multiplayer! Simple to learn but with tons of tactical depth; come and check out Dominus and help us make it great!

DISCOVER NEW LANDS

GROW VILLAGES INTO MIGHTY CITIES

PICK YOUR TRIBE AND UPGRADE YOUR EMPIRE

SUMMON AND COLLECT POWERFUL CHAMPIONS

SHOW YOUR FRIENDS WHO’S BOSS!

Dominus uses an innovative ‘simultaneous-turn’ system which adds a lot of suspense to the gameplay as you try to guess what your opponent will do

More importantly, it means the days of waiting hours for your opponents to take their turns ARE OVER! Games are quick and intense usually taking about 10-30 minutes

We’re constantly making changes and improvements, and we really listen to our community, so get involved!

Reach out to us on our social media if you’d like to try the game on Android or iOS, and we can get you on the alpha!

Join our community for tournaments, competitions, crowd-sourced game design and game sessions with the devs!

4ryVlwrYgaE7-ki8BbN44fnx1fC0ASCpc8CgdNpFEhm9EZg5tZIvbVlSndP1woAXQvkfsOFV2r6c3kiZhpsWgVa9K5rOLzOCZ6EbE0G1-CwA4h5Kq5SVf2YFY__wCetNF6d6r0ezruAnLzDfXh55KCo
qM719ge4OOvhA5S1BmDeY8QZNi0CrHRj0deZsrXH1riHfAQhFPRgZDJRpNKu_kz_6uPQbBAvIpegccsonYp6M0vnu_twoPK-0o4w7kG047ufvxkf7oZHYg18TGbYUKK4gAnstNFwkxklXPXcgJQQOfM

Scare Birds Away

I don't mind birds, but suddenly I have a group of birds that eat purple berries and leave their purple poop all over my deck and hand rail. I had read in the past that hanging shiny tape will scare birds away and they picked up these shiny tapes at a Tractor Supply Store. I have a Tractor Supply Store not that far away so I went to it looking for the shiny tape. She showed me something better to keep the birds away, and it works - WHO WHO

Attachments

  • owl.jpg
    owl.jpg
    103.9 KB · Views: 88

my code works fine in simulator but crashes in play store

Hi,
I have updated my app for target sdk 34 and min sdk 24
my app has got 4 tabs and the first and main tab is a google maps which displays markers on maps but the app works fine on simulator and even launched with my phone connected but I uploaded it to google play store but the app crashes on startup and I see no logs in the crash section
what is the problem with this code?

Java:
public class tab1 extends Fragment implements GoogleMap.OnMarkerClickListener,OnMapReadyCallback{

// TODO: Rename parameter arguments, choose names that match
// the fragment initialization parameters, e.g. ARG_ITEM_NUMBER
private static final String ARG_PARAM1 = "param1";
private static final String ARG_PARAM2 = "param2";
MapView mMapView;
private GoogleMap googleMap;
LocationManager locationManager;
LocationListener locationListener;
private PersisDatabase db;
ArrayList<Listings> listings = new ArrayList<>();
private Executor executor = Executors.newSingleThreadExecutor();
boolean first_time_load = true;
boolean tab_first_time_load = true;
int LOCATION_PERMISSION_REQUEST_CODE = 1;
private UpdateListingsTable updateListings;

public tab1() {
// Required empty public constructor
}

private void setUpMapIfNeeded() {
if (googleMap == null) {
Log.d("MyMap", "setUpMapIfNeeded");
mMapView.getMapAsync(this);
}
}


public void onMapReady(GoogleMap googleMap) {
Log.d("maps", "onMapReady");
googleMap = googleMap;
setUpMap();
}

private void setUpMap() {
googleMap.getUiSettings().setMapToolbarEnabled(false);
}


@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Log.d("loading","onCreate");
}

@Override
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
Log.d("loading","onViewCreated");
}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
Log.d("loading","onCreateView");
Log.d("maps","onCreateView");
// Inflate the layout for this fragment

View rootView = inflater.inflate(R.layout.fragment_tab1, container, false);

mMapView = (MapView) rootView.findViewById(R.id.mapView);
mMapView.onCreate(savedInstanceState);

mMapView.onResume(); // needed to get the map to display immediately

try {
MapsInitializer.initialize(getActivity().getApplicationContext());
} catch (Exception e) {
e.printStackTrace();
}

mMapView.getMapAsync(new OnMapReadyCallback() {
@Override
public void onMapReady(GoogleMap mMap) {
googleMap = mMap;

googleMap.setOnMapLoadedCallback(new GoogleMap.OnMapLoadedCallback() {
@Override
public void onMapLoaded() {
// googleMap.clear();

final Handler handler = new Handler();
handler.postDelayed(new Runnable() {
@Override
public void run() {
Log.d("maps","loaded after seconds");
firstLoadData();
Toast.makeText(getActivity(), getResources().getString(R.string.message_loading_map), Toast.LENGTH_SHORT).show();
final Handler handler2 = new Handler();
handler2.postDelayed(new Runnable() {
@Override
public void run() {
Log.d("maps","loaded after seconds 10");
loadMarkers();
}
}, 2000);
}
}, 1000);

Log.d("maps","setOnMapLoadedCallback");
}
});
//UiSettings mapUiSettings = googleMap.getUiSettings();
googleMap.getUiSettings().setZoomControlsEnabled(true);
googleMap.setInfoWindowAdapter(new MarkerInfoWindowAdapter());

locationManager = (LocationManager) getActivity().getSystemService(Context.LOCATION_SERVICE);
locationListener = new LocationListener() {
@Override
public void onLocationChanged(Location location) {
if (first_time_load){
centerMapOnLocation(location, getResources().getString(R.string.yourLocation));
first_time_load = false;
Log.d("maps:","first_time_load:" + first_time_load);
}

//Log.d("maps:","location changed");
}

@Override
public void onStatusChanged(String s, int i, Bundle bundle) {
Log.d("maps:","status changed" + s.toString());
}

@Override
public void onProviderEnabled(String s) {
Log.d("maps:","provider enabled");
}

@Override
public void onProviderDisabled(String s) {
Log.d("maps:","provider disabled");
}
};

if (ContextCompat.checkSelfPermission(getContext(), Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED) {
googleMap.setMyLocationEnabled(true);
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER,0,0,locationListener);
locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0, locationListener);
Location lastKnownLocation = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);
centerMapOnLocation(lastKnownLocation, getResources().getString(R.string.yourLocation));
} else {
requestPermissions(new String[]{
Manifest.permission.ACCESS_FINE_LOCATION, Manifest.permission.ACCESS_COARSE_LOCATION}, 1);
}
}
});

return rootView;
}

@Override
public void onResume() {
super.onResume();
updateListings = UpdateListingsTable.getInstance(getContext());
updateListings.insertRecords();
mMapView.onResume();
Log.d("maps", "onResume");
setUpMapIfNeeded();
}

@Override
public void onPause() {
super.onPause();
mMapView.onPause();
}

@Override
public void onDestroy() {
super.onDestroy();
mMapView.onDestroy();
}

@Override
public void onLowMemory() {
super.onLowMemory();
mMapView.onLowMemory();
}

public void centerMapOnLocation(Location location, String title) {
Log.d("maps:","centerMapOnLocation");
if (location != null) {
LatLng userLocation = new LatLng(location.getLatitude(), location.getLongitude());
Log.d("maps","user loc lat lon:" + userLocation);
// googleMap.clear();
loadMarkers();

googleMap.addMarker(new MarkerOptions().position(userLocation)
.icon(BitmapDescriptorFactory
.defaultMarker(BitmapDescriptorFactory.HUE_RED)).title(title));

googleMap.moveCamera(CameraUpdateFactory.newLatLngZoom(userLocation,6));

}else{ //location not available zoom on Tehran
LatLng tehranLocation = new LatLng(35.6892, 51.3890);
Log.d("maps","Tehran lat lon:" + tehranLocation);
// googleMap.clear();
loadMarkers();
googleMap.moveCamera(CameraUpdateFactory.newLatLngZoom(tehranLocation,10));
}
}

@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
Log.d("maps:","onRequestPermissionsResult");
Log.d("maps:","code" + requestCode);


if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
Log.d("maps","PERMISSION_GRANTED");
if (ContextCompat.checkSelfPermission(getContext(), Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED) {
Log.d("maps","ACCESS_FINE_LOCATION");
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER,0,0,locationListener);
locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0, locationListener);
Location lastKnownLocation = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);
centerMapOnLocation(lastKnownLocation, getResources().getString(R.string.yourLocation));
}
}
}

@Override
public boolean onMarkerClick(Marker marker) {
if (marker.equals(marker))
{
Log.d("mapLocation","clicked");
}
return false;
}

public class MarkerInfoWindowAdapter implements GoogleMap.InfoWindowAdapter {

boolean not_first_time_showing_info_window;

public MarkerInfoWindowAdapter() {
}

@Override
public View getInfoWindow(Marker marker) {
return null;
}

@Override
public View getInfoContents(final Marker marker) {
Log.d("maps","getInfoContents clicked");
Log.d("maps","getInfoContents item:" + marker.getSnippet());
View v = getLayoutInflater().inflate(R.layout.fragment_map, null);

ImageButton listingPhoto = (ImageButton) v.findViewById(R.id.listingPhoto);

TextView markerLabel = (TextView) v.findViewById(R.id.title);
markerLabel.setText(marker.getTitle());

TextView purposeLabel = (TextView) v.findViewById(R.id.purpose);
int id;
try {
id = Integer.parseInt(marker.getSnippet());
Log.d("maps","ID:"+ id);
purposeLabel.setText(listings.get(id).getPurpose());

} catch (NumberFormatException nfe) {
purposeLabel.setText("");
Log.d("maps","error id");

}


try {
id = Integer.parseInt(marker.getSnippet());
String url = UrlRepository.getPictureUrl() + listings.get(id).getFolder() + "/" + Utilities.generateThumbnail(listings.get(id).getPhoto());

if (not_first_time_showing_info_window) {
not_first_time_showing_info_window = false;
if (listings.get(id).getPhoto() != null && !listings.get(id).getPhoto().isEmpty()) {
Picasso.get().load(url).into(listingPhoto);
} else {
Picasso.get().load(R.drawable.home).into(listingPhoto);
}
Log.d("maps", "first time");
} else {
not_first_time_showing_info_window = true;
if (listings.get(id).getPhoto() != null && !listings.get(id).getPhoto().isEmpty()) {
Picasso.get().load(url).into(listingPhoto, new InfoWindowRefresher(marker));
} else {
Picasso.get().load(R.drawable.home).into(listingPhoto);
}
Log.d("maps", "NOT first time");
}


} catch (NumberFormatException nfe) {
Log.d("maps", "there was a problem loading");
Picasso.get().load(R.drawable.home).into(listingPhoto);
}

googleMap.setOnInfoWindowClickListener(new GoogleMap.OnInfoWindowClickListener() {
@Override
public void onInfoWindowClick(Marker marker) {
Log.d("intent", "window clicked:" + marker.getId());
int myId = 0;
try {
myId = Integer.parseInt(marker.getSnippet());
Intent myIntent = new Intent(getContext(), ListingViewActivity.class);
myIntent.putExtra("id", listings.get(myId).getId());
getContext().startActivity(myIntent);
} catch (NumberFormatException nfe) {

}
}
});
return v;

}

}


private class InfoWindowRefresher implements Callback {
private Marker markerToRefresh;

private InfoWindowRefresher(Marker markerToRefresh) {
this.markerToRefresh = markerToRefresh;
}

@Override
public void onSuccess() {
markerToRefresh.showInfoWindow();
}

@Override
public void onError(Exception e) {

}
}

public void firstLoadData(){
db = PersisDatabase.getInstance(getContext());
executor.execute(new Runnable() {
@Override
public void run() {
List<Listings> list = db.dataItemDao().getListings();
for (Listings item : list) {
listings.add(item);
}
}
});
}

public void loadMarkers(){
// mMapView.onResume();
db = PersisDatabase.getInstance(getContext());
executor.execute(new Runnable() {
@Override
public void run() {
// listings.clear();
List<Listings> list = db.dataItemDao().getListings();
for (Listings item : list) {
listings.add(item);
}
}
});
Log.d("maps:", "listing size loadMarkers:" + listings.size());
for(int item= 0; item < listings.size(); item++) {


LatLng loc = new LatLng(listings.get(item).getLatitude(), listings.get(item).getLongitude());

googleMap.addMarker(new MarkerOptions()
.snippet(String.valueOf(item))
.icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_AZURE))
.position(loc)
.title(listings.get(item).getTitle()));
}

}
}

App file size issues..use of .WebP format images

I have run into file size problems in an app I am currently working on.
So I have converted all my images to the WebP format and reduced the file sizes remarkably .
However when attempting to batch process these images to fill the appropriate dpi buckets the pixel densities remain at 72 dpi.
All the buckets are filled with 72 dpi images.
Is it acceptable to simply paste all the images into the project/app/ drawable resource folder and forgo the buckets altogether ?

Pixel Fishing - mobile game with cute graphics

Hello everyone!

I am excited to announce the release of my latest game on Google Play. This is my first serious game, following the not-so-great Jump, Astronaut! I believe this new game is much better and more interesting. I would greatly appreciate it if you could rate it.

Introducing Pixel Fishing, a delightful game with charming graphics that takes you on an underwater adventure to catch pixelated fish. Your objective is to upgrade your fishing gear and enhance your skills to capture rare and fascinating fish species. What sets this game apart is the thrilling challenge of controlling your hook during its descent, skillfully avoiding fish to dive deeper, and seizing the opportunity to catch as many fish as possible when the hook resurfaces. This unique gameplay mechanic is reminiscent of the popular game Ridiculous Fishing, ensuring an enjoyable gaming experience.

Here are some exciting features of Pixel Fishing:

- Complete your fish book by collecting a diverse range of fish species.
- Enhance your fishing equipment, including your line and hook, to unlock not only common fish but also multiple golden fish species.
- Engage in daily quests to earn valuable rewards in the form of gold.
- Accomplish in-game achievements to receive thrilling rewards.
- Even when you're offline, you can continue to earn coins and progress in the game.
- Immerse yourself in the pleasant music and cozy atmosphere that are characteristic of pixelated games.
- Each dive offers a unique experience, ensuring endless excitement and discovery.

Thank you for your support, and I hope you enjoy diving into the world of Pixel Fishing!

Please rate and share your feedback.

Google Play

4.png
3.png
1.png
2.png
5.png

Boost no longer receiving voice-to-texts from Spectrum Voicemail

About the time Boost introduced the Boost One app I started missing voicemail texts which I've set to forward from my Spectrum landline to my Boost cellphone.
I've had no trouble receiving these texts from noreply@spectrum.net for many years until a few months ago.

The email of the text transcription arrives successfully (with and without the audio file attached).

My theory is that most texts that come from businesses use a 5-digit number, whereas Spectrum forwards its voicemail using the email noreply@spectrum.net.
I can't find any other examples of texts from email. Any application/browser extension seems to use a phone number to forward.

I really miss knowing what my home phone voicemail contains when out with my cellphone. I really hope this isn't the fault of Boost because I like them - and their prices. Been with them many years.

Any ideas?

  • Question Question
Android Phone doesn't receice imeasages.

I have a Samsung Galaxy S20 Fe 5G phone. About 3 days ago my phone started to not receive messages from iPhone users. I am able to call iPhone users and also receive any form of image from them but not a text. I am able to see their replies in the group chat that I'm in, which is made up of iPhone and android users. Whenever someone who uses a iPhone and sends me a text directly, I can't see what their reply was. I am able to text them but not the other way around. I tried everything from resetting network connecting, clearing my cache and data from the messages app, airplane mode, reseting phone and even called my phone carrier to see if they can help but no one has been able to help.

Filter

Back
Top Bottom