You can give them to your Pokemon when you migrate from Ruby and Sapphire. You can also find them on your pokewalker on any of the beaches. They are more common in the routes that take longer to unlock. I haven't seen any in the actual game.
Go to www.pokemonwifi.org, they will answer any questions you have.
.
use thief on wild luvdisc that swarm next to beginning town
You can find them in one of the routes on the pokewalker.
Rock smash the rocks in the Ruins of Alph or use the Dowsing Machine.
Chat with our AI personalities
Heart Scales can be purchased in the Pokeathlon shop for 1000P
Heart scales can typically be found underground by using the Explorer Kit.
You cannot find heart scales there. You have to go underground, go digging, and maybe you'll find one.
You can smash rocks randomly to try to get one. If you don't want to go through trial and error, you can earn 1000 points in the Pokeathlon and trade them for a Heart Scale.
You can't migrate from HeartGold to Ruby. But it can be the opposite. Pokemon can be migrated from Pokemon Ruby to Pokemon HeartGold.