Hello
I've never used the AppGameKit physics engine in my life, and I've tried and failed to make platformer physics myself, so I'm probably the least qualified person to answer this, but I do have a few ideas I can bounce around that may or may not be useful
So my thinking as to the reason your character jerks sideways from the centre of the screen when you move is that you're using the sprite's position to position the "camera", and the sprite's position only gets updated by the physics engine during the Sync() command, which is after you set the "camera" position.
I fixed this pretty easily by splitting Sync() into its components: Update(1.0/30), Render() and Swap() (1.0/30 because that's what your fps is set to). Then I put your SetViewOffset() command after Update() but before Render(), so all the positions are up to date before it renders.
That's almost certainly
not the best way to do it, because like I say I haven't used the physics stuff before and don't really know what I'm on about
In the name of smoothness, I would normally not set an object's velocity directly, because nothing works like that in real life. Instead I would probably have a cap velocity so it doesn't end up going super fast and then instead of setting the velocity to that straight away, just increase it by a certain amount each frame until it reaches that cap velocity. This should make it feel less jerky, if that's what you were looking for.
About the sticking to walls thing, that's probably because they physics engine wants to set the velocity to 0 or thereabouts when it hits the wall, but you then set it straight back to what it was, meaning that it's kinda being pushed into the wall. That's my best guess anyway. Doing my previous suggestion might fix this to an extent, because the velocity would at least only get increased by one increment by your code instead of the full amount. Alternatively, you could have similar variables to your isonground one, but for the walls. This would be tough because of the thinness of your platforms, a single raycast thingy wouldn't be able to tell, for example, if just the character's head hit the wall, or just its feet. I guess you could do multiple raycasts or something? I dunno.
But then if you has isonleftwall and isonrightwall or something, you could use these variables to make sure pressing the right key doesn't set the character's velocity to 500 or whatever if it's already touching a wall on the right hand side.
Another thing to watch out for is that your raycast for touching the ground only works in the middle of the character, so you it won't let you jump if you're overhanging the edge by more than half.
Well there you go, some ideas from me. They might all be useful, or none of them, I don't really know, you (and possibly others who critique my methods) decide
Hope you work it out!