I would not use get_posts() to setup my loop on the single.php page. I would just use the normal proper loop. Please check out this page in the codex about Theme Development
Here is an example of a single.php that will work as expected
<div id="primary" class="content-area">
<div id="content" class="site-content" role="main">
<?php
// Start the Loop.
while ( have_posts() ) : the_post(); ?>
<?php
get_template_part( 'content', get_post_format() );
// Previous/next post navigation.
previous_post_link( '%link', 'Prev post in category', true );
next_post_link( '%link', 'Next post in category', true );
// If comments are open or we have at least one comment, load up the comment template.
if ( comments_open() || get_comments_number() ) {
comments_template();
}
endwhile;
?>
</div><!-- #content -->
</div><!-- #primary -->
As pointed out in the other answer, go and have a read on how to use the next_post_link
and the previous_post_link