The approach many people take to this problem is to use a solar panel to charge a battery with a USB charging port on it.