Try this.
Have the dog sit in front of you. Have 20 very small (as in 1/2 dime size) treats (but very good.. as in hot dog or Spam or cold cuts).
Say his name, immediately hand him a treat. Repeat 20 times very quickly.
Now, carry treats with you and randomly say his name and immediately give him a treat. He never knows when this is coming. Do this at home and every other place you go...
When he ALWAYS looks at you when you say his name, no matter where you are, start to fade the treats. Randomly treat him (every other time, every 4th time, every 5th time.. sometimes give him 3-4 treats.. mix it up so he NEVER knows if he is going to get a reward or not and never knows if it is going to be one treat or 4 treats). Random treat delivery is intermittent reinforcement and really drives the lesson home. Randomly treat in all kinds of place.. always using high end treats.
Eventually your dog will ALWAYS look at you when he hears his name. You can fade the treats but if you REALLY want to keep him sharp, once in awhile, break out the treats and the random reinforcement.