This app was mentioned in 6 comments, with an average of 4.33 upvotes
Mapmyfitness will do what you need. Even if the GPS doesn't work, it will give you a running tally of how far you walked. It even has an auto-pause so you can stop and it won't track you for as long as you are stopped.
https://play.google.com/store/apps/details?id=com.mapmyfitness.android2&hl=en
Used to use Strava on Android, never had any issues. I use Wahoo fitness now.
One more app to check out.. UA's MapMyFitness.
This is a super important question as it affects how MFP functions and can massively change your results with it. I'll bullet point it for brevity:
BMR - Basal Metabolic Rate - the number of calories you'd burn if you stayed in bed all day.
Activity level - legacy setting in MFP from years ago when fitness trackers and smartphones weren't a thing. (you can find it in settings by logging in to your MFP account and going to My Home -> Goals -> View Guided Setup In the app, it's Settings->Profile->Goals->Activity Level... and the term used in the app is "Not Very Active" versus "Sedentary" online)
MFP will guess based on the "activity level" setting how many calories you burn above your BMR. If you are more or less active on any given day, the estimate will be wrong.
With smartphones and fitness trackers in the mix, set MFP to "sedentary/not very active" and let phone/fitness band feed MFP with actual, real-world step and exercise data.
Either use a heart-rate fitness band or an app like MapMyFitness to track exercises (bike ride, weight lifting etc) or manually enter the activity in MFP. This gives MFP something to work with other than the general "activity level" setting to guess about your activity.
You can use an online TDEE/BMR calculator (like this one) to generate a figure for the calories and macros you need in a day. Then, enter that in MFP to get your baseline. Note that the linked calculator also has various figures for different activity levels with explanations as to why you'd use them.
Increasing "activity level" to anything above "not very active/sedentary" and then adding any kind of activity, from steps to exercises, may be "double-counting" your calorie burn.
My preference is to wear an always on heart-rate fitness band and log all activity, leaving activity level at "sedentary/not very active."
I like 8fit. I think https://play.google.com/store/apps/details?id=com.mapmyfitness.android2 also has or had some of the features you mention.
For the fitness freaks I recommend checking out MapMyFitness