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

  • 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: 108

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.

Mail.com problems

I was trying to help my friend set up an account with nail.com. He got his address and password fine, and he does get some mail, but not most. They apparently will not respond to requests for help and I guess there's no faq. He's been trying to set up accounts which he cannot do because of this. Is there any way to fix it?

Blocking popups and redirects in apk

Hi, I'm not a coder or app developer I just wanted to use a website that i use to watch about every show and movie into an apk for my phone, I've got the apk working on my phone using Android studio, just following a YouTube video on how to turn a website into a apk, however the website has a lot of popup ads and whenever you click on any blank space it will open up an ad redirecting to the browser, how do I make it from the code so that the app can't open any browsers, redirect, and hopefully if possible remove any popups. Thanks!

Help How do I fix a soft bricked Samsung Galaxy Mega GT-I9200?

I just brought this phone very cheap and when I turn it on, its stuck at the Samsung logo. Then I boot it to recovery mode via Vol up + power button and "Wipe Data/Factory Reset" and then I choose the menu option "Yes -- delete all user data" and "reboot system now". But its still stuck at the Samsung logo.

Is there a way for me to boot the phone to clear eMMc?

Can't add/delete files from my phones app data folders

I am talking about the Kodi app ... PC\Z Fold5\Internal storage\Android\data\org.xbmc.kodi

I got a new phone and I wanted to just move all my files from my Kodi app to the new phone. It will take me forever to get Kodi setup if I have to do it manually. But it doesn't let me drag and drop the files from the old phone into the new one. I have tried doing it on my laptop and tried a handful of different 3rd party file management apps. Nothing would work. Does my phone need to be rooted???

"New" error

I was using a website I usually do with duckduckgo and found that the content wasn't loading. I tried the usual suspects: refresh, shut down entirely, etc. with no luck. This morning I at least received an error message about my being forbidden to use a dateloader or something that way. I have never before seen this. I suspect it may have something to do with No Root Firewall and/or InviZible. I did shut off the latter's firewall with no apparent effect. NRF got shut off somehow recently and I ended up with a boatload of unwanted apps. Of course I deleted them. Now I get a crappy reminder about updating the system, no thank you. It's easy enough to disable but still annoying. How do I get rid of the error and start using that website again?

Also Can't Login

Earlier today someone posted a thread entitled "cannot log in." I thought this was funny, since they had a user ID. I logged out so that I could post back with the exact steps to log in. Well they were right, there is no login link or button! There is only "Register" (in fact there are THREE Register links - one in the upper right of the blue bar, one in the green bar below it, and one in the sidebar (it's a SIGN UP button, but all 3 go to the same registration page). This computer was the only device I was logged in on, so I am effectively locked out of the forum unless I re-register with a new user name. I tried two different browsers, latest version of Chrome and Firefox, and it's the same on both. Apparently, the OP failed to mention that they were already a member under a different user name.

This seems to have gotten overlooked in the site redesign, so DON'T LOG OUT UNTIL THIS IS FIXED.

-Mr. Lucky

Your device is corrupt

I have a Nokia T20 tablet running android 13 with all the up to date security patches, it's about 3 months old and twice recently I've switched it on and waited several minutes only to be greeted with a white screen with message "your device is corrupt and can't be trusted, it will not boot" or something very similar as far as I can remember. On both occasions I pressed volume and power buttons together and it rebooted and started up properly and was usable as normal. Now obviously it was scary to encounter such a message, I've looked online for help and most sites seem to be saying it's normally as a result of flashing with a custom ROM or trying to root the device, well I've never done that and wouldn't have any idea how to. I'm worried my tablet will stop working altogether one day, what should I do? Any suggestions please.
Thanks,

Filter

Back
Top Bottom