Related
I recently saw this tread:
http://forum.xda-developers.com/showthread.php?t=370632
i liked the idea, and when i thought about it, gesture recognition didn't seem to hard. And guess what - it really wasn't hard
I made a simple application recognizing gestures defined in an external configuration file. It was supposed to be a gesture launcher, but i didn't find out how to launch an app from a winCE program yet. Also, it turned out to be a bit to slow for that because of the way i draw gesture trails - i'd have to rewrite it almost from scratch to make it really useful and i don't have time for that now.
So i decided to share the idea and the source code, just to demonstrate how easy it is to include gesture recognition in your software.
My demo app is written in C, using XFlib for graphics and compiled using CeGCC so you'll need both of them to compile it (download and install instructions are on the Xflib homepage: www.xflib.net)
The demo program is just an exe file - extract it anywhere on your device, no installation needed. You'll also need to extract the gestureConfig.ini to the root directory of your device, or the program won't run.
Try some of the gestures defined in the ini (like 'M' letter - 8392, a rectangle - 6248, a triangle - 934), or define some of your own to see how the recognition works. Make sure that you have a string consisting of numbers, then space of a tabulator (or more of them) and some text - anything will do, just make sure that there's more than just the numbers in each line. Below you can set the side sensitivity to tweak recognition (see the rest of the post for description on how it works). Better leave the other parameter as it is - seems to work best with this value.
Now, what the demo app does:
It recognizes direction of drawn strokes, and prints them on the bottom of the screen as a string of numbers representing them (described bellow). If a drawn gesture matches one of the patterns in the config file, the entire drawn gesture gets highlited. It works the best with stylus, but is usable with finger as well.
Clicking the large rectangle closes the app.
And how it does it:
The algorithm i used is capable of recognizing strokes drawn in eight directions - horizontally, vertically and diagonally. Directions are described with numbers from 1 to 9, arranged like on a PC numerical keyboard:
Code:
7 8 9
4 6
1 2 3
So a gesture defined in config as 6248 is right-down-left-up - a ractangle.
All that is needed to do the gesture recognition is last few positions of the stylus. In my program i recorded the entire path for drawing if, but used only 5 last positions. The entire trick is to determine which way the stylus is moving, and if it moves one way long enough, store this direction as a stroke.
The easiest way would be to subtract previous stylus position from current one, like
Code:
vectorX=stylusX[i]-stylusX[i-1];
vectorY=stylusY[i]-stylusY[i-1];
[code]
But this method would be highly inaccurate due to niose generated by some digitizers, especially with screen protectors, or when using a finger (try drawing a straight line with your finger in some drawing program)
That's why i decided to calculate an average vector instead:
[code]
averageVectorX=((stylusHistoryX[n]-stylusHistoryX[n-5])+
(stylusHistoryX[n-1]-stylusHistoryX[n-5])
(stylusHistoryX[n-2]-stylusHistoryX[n-5])
(stylusHistoryX[n-3]-stylusHistoryX[n-5])
(stylusHistoryX[n-4]-stylusHistoryX[n-5]))/5;
//Y coordinate is calculated the same way
where stylusHistoryX[n] is the current X position of stylus, and stylusHistoryX[n-1] is the previous position, etc.
Such averaging filters out the noise, without sacrificing too much responsiveness, and uses only a small number of samples. It also has another useful effect - when the stylus changes movement direction, the vector gets shorter.
Now, that we have the direction of motion, we'll have to check how fast the stylus is moving (how long the vector is):
Code:
if(sqrt(averageVectorX*averageVectorX+averageVectorY*averageVectorY)>25)
(...)
If the vector is long enough, we'll have to determine which direction it's facing. Since usually horizontal and vertical lines are easier to draw than diagonal, it's nice to be able to adjust the angle at which the line is considered diagonal or vertical. I used the sideSensitivity parameter for that (can be set in the ini file - range its is from 0 to 100). See the attached image to see how it works.
The green area on the images is the angle where the vector is considered horizontal or vertical. Blue means angles where the vector is considered diagonal. sideSensitivity for those pictures are: left one - 10, middle - 42 (default value, works fine for me ), right - 90. Using o or 100 would mean that horizontal or vertical stroke would be almost impossible to draw.
to make this parameter useful, there are some calculations needed:
Code:
sideSensitivity=tan((sideSensitivity*45/100)*M_PI/180);
First, the range of the parameter is changed from (0-100) to (0-22), meaning angle in degrees of the line dividing right section (green) and top-right (blue). hat angle is then converted to radians, and tangent of this angle (in radians) is being calculated, giving slope of this line.
Having the slope, it's easy to check if the vector is turned sideways or diagonal. here's a part of source code that does the check, it is executed only if the vector is long enough (condition written above):
Code:
if( abs(averageVectorY)<sideSensitivity*abs(averageVectorX) ||
abs(averageVectorX)<sideSensitivity*abs(averageVectorY)) //Vector is turned sideways (horizontal or vertical)
{
/*Now that we know that it's facing sideways, we'll check which side it's actually facing*/
if( abs(averageVectorY)<sideSensitivity*averageVectorX) //Right Gesture
gestureStroke='6'; //storing the direction of vector for later processing
if( abs(averageVectorY)<sideSensitivity*(-averageVectorX)) //Left Gesture
gestureStroke='4';
if( abs(averageVectorX)<sideSensitivity*(averageVectorY)) //Down gesture
gestureStroke='2';
if( abs(averageVectorX)<sideSensitivity*(-averageVectorY)) //Up gesture
gestureStroke='8';
}
else
{ //Vector is diagonal
/*If the vector is not facing isdeways, then it's diagonal. Checking which way it's actually facing
and storing it for later use*/
if(averageVectorX>0 && averageVectorY>0) //Down-Right gesture
gestureStroke='3';
if(averageVectorX>0 && averageVectorY<0) //Up-Right gesture
gestureStroke='9';
if(averageVectorX<0 && averageVectorY>0) //Down-Left gesture
gestureStroke='1';
if(averageVectorX<0 && averageVectorY<0) //Up-Left gesture
gestureStroke='7';
}
Now, we have a character (i used char type, so i can use character strings for string gestures - they can be easily loaded from file and compared with strcmp() ) telling which way the stylus is moving. To avoid errors, we'll have to make sure that the stylus moves in the same direction for a few cycles before storing it as a gesture stroke by increasing a counter as long as it keeps moving in one direction, and resetting it if it changes the direction. If the counter value is bigger than some threshold (pathSensitivity variable is used as this threshold in my program), we can store the gestureStroke value into a string, but only if it's different from previous one - who needs a gesture like "44444" when dragging the stylus left?
After the stylus is released, you'll have to compare generated gesture string to some patterns (eg. loaded from a configuration file), and if it matches, do an appropriate acton.
See the source if you want to see how it can be done, this post already is quite long
If you have any questions, post them and i'll do my best to answer.
Feel free to use this method, parts of, or the entire source in your apps. I'm really looking forward to seeing some gesture-enabled programs
Very nice work. Reading your post was very insightful, and I hope this can provide the basis for some new and exciting apps!
great app... and well done for not just thinking that seems easy... but actually doing it...
ive been a victim of that myself
very nice work man.. one question in which tool did you write code.. i mean it looks like C but how you test and all..
Great app, i see that it is just proof of concept at this stage, but i see that it can be used in future applications control
Continiue with your great work
nik_for_you said:
very nice work man.. one question in which tool did you write code.. i mean it looks like C but how you test and all..
Click to expand...
Click to collapse
It is C, (no "++", no "#", no ".NET", just god old C ) compiled with opensource compiler CeGCC (works under linux, or under windows using cygwin - a unix emulator), developed in opensource IDE Vham (but even a notepad, or better notepad++ would do), tested directly on my Wizard (without emulator). I used XFlib which simplifies graphics and input handling to a level where anyone who ever programed anything at all should be able to handle it - it providea an additional layer between the programmer and the OS. You talk to Xflib, and Xflib talks to the OS. I decided to use this library, because i wanted to try it out anyway.
If i decide to rewrite it and make an actual launcher or anything else out of it, i'll have to use something with a bit faster and more direct screen access (probably SDL, since i already done some programing for desktop PC with it) - XFlib concentrates on usage of sprites - like 2D console games. every single "blob" of the gesture trail is a separate sprite , which has to be drawn each time the screen is refreshed - that is what slows down the app so much. The gesture recognition itself is really fast.
Very good program i just test it and it works very well some combinaison are pretty hard to realize but i like this blue point turning red with command2 and 934. Goond luck , i'll continue to see your job maybe you'll code a very interesting soft.
Interesting work.... would like to see this implemented in an app, could be very useful.
If you want I have some code I did for NDS coding, and which I ported on PocketPC for XFlib.
It works perfectly well and I use it in Skinz Sudoku to recognize the drawn numbers.
The method is pretty simple : when the stylus is pressed, enter the stylus coordinates in a big array. And when it's released, it takes 16 points (could be changed depending on what you need) at the same distance from each other, checks the angle, and gives you the corresponding 'char'.
To add new shapes, it's just a 15 character string which you link to any char (like, link right movement to 'r', or 'a', or a number, or whatever ^^). It works for pretty much any simple shape, and I even used it to do a graffitti-like thing on NDS which worked really well
Hey!
How do you get the last Stylus Positions?
and how often do you read them out
I want to realice such a code under vb.net, but I don't know how i should read out the last stylus positions, to get them perfectly for such calculations
Code:
Private Sub frmGesture_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles MyBase.MouseMove
If StylusJump = 1 Then
StylusJump += 1
If (CurrentStylusPosition.X <> frmGesture.MousePosition.X) Or (CurrentStylusPosition.Y <> frmGesture.MousePosition.Y) Then
LastStylusPosition(9).X = LastStylusPosition(8).X
LastStylusPosition(9).Y = LastStylusPosition(8).Y
LastStylusPosition(8).X = LastStylusPosition(7).X
LastStylusPosition(8).Y = LastStylusPosition(7).Y
LastStylusPosition(7).X = LastStylusPosition(6).X
LastStylusPosition(7).Y = LastStylusPosition(6).Y
LastStylusPosition(6).X = LastStylusPosition(5).X
LastStylusPosition(6).Y = LastStylusPosition(5).Y
LastStylusPosition(5).X = LastStylusPosition(4).X
LastStylusPosition(5).Y = LastStylusPosition(4).Y
LastStylusPosition(4).X = LastStylusPosition(3).X
LastStylusPosition(4).Y = LastStylusPosition(3).Y
LastStylusPosition(3).X = LastStylusPosition(2).X
LastStylusPosition(3).Y = LastStylusPosition(2).Y
LastStylusPosition(2).X = LastStylusPosition(1).X
LastStylusPosition(2).Y = LastStylusPosition(1).Y
LastStylusPosition(1).X = CurrentStylusPosition.X
LastStylusPosition(1).Y = CurrentStylusPosition.Y
CurrentStylusPosition.X = frmGesture.MousePosition.X
CurrentStylusPosition.Y = frmGesture.MousePosition.Y
End If
Dim LabelString As String
Dim iCount As Integer
LabelString = "C(" & CurrentStylusPosition.X & "\" & CurrentStylusPosition.Y & ")"
For iCount = 1 To 9
LabelString = LabelString & " " & iCount & "(" & LastStylusPosition(iCount).X & "\" & LastStylusPosition(iCount).Y & ")"
Next
lblGesture.Text = LabelString
ElseIf StylusJump <= 3 Then
StylusJump += 1
Else
StylusJump = 1
End If
End Sub
Sorry, i didn't notice your post before. I guess that you have the problem solved now, that you released a beta of gesture launcher?
Anyway, you don't really need 10 last positions, in my code i used only 5 for calculations and it still worked fine.
Nice thread, thanks for sharing.
Human-,achine interface has always been an interesting subject to me, and the release of ultimatelaunch has sparked an idea. I am trying to acheive a certain look-and-feel interface - entirely using components that are today screen and ultimatelaunch compatible. Basically a clock strip with a few status buttons at the top, and an ultimatelaunch cube for the main lower portion of the screen - gesture left/right to spin the cube, and each face should have lists of info / icons scrolled by vertical gesture. I'm talking big chunky buttons here - tasks, calendar appts, (quick) contacts, music/video playlists - all vertical lists, one item per row, scrolling in various faces of the cube.
Done the top bit using rlToday for now. Set it to type 5 so scrollbars never show for the top section. All good. Cobbling together bits for the faces, but few of the apps are exactly what I want, some (like that new face contacts one) are pretty close, and being a bit of an armchair coder, I thought now would be a good opportunity to check out WM programming and see if I can't at least come up with a mockup of what I want if not a working app.
I was wondering if anyone could advise me on whether I should bother recognising gestures in such a way as this. Does WM not provide gesture detection for the basic up, down, left, right? Actually, all the stuff I have in mind would just require up/down scrolling of a pane - I was thinking that I may well not need to code gesture support at all, just draw a vertical stack of items, let it overflow to create a scrollbar and then just use the normal WM drag-to-scroll feature (if it exists) to handle the vertical scrolling by gesture in the face of the cube. I would rather keep the requirements to a minimum (eg touchflo), both for dependancy and compatibility reasons, so maybe doing the detection manually would be the "way to go", I dunno.
Did you release source with the app launcher? A library maybe? I intend to go open source with anything I do, so if you are doing the same then I would love to have access to your working code
Nice work man.
Impressive.
Adaptive Zoom
Don’t want to zoom to click a link? Try this..
1. Open opera’s preference editor by going to the following link:
opera:config
Note there is no http:// proceeding the link.
2. Click on Adaptive Zoom and try the following settings:
Browser Buffer Height = 4096
Browser Buffer Width = 800
Maximum Zoom = 100
Minimum Overview Zoom = 100
Minimum Zoom = 100
Virtual Screen Width = 800
Zoom Slider Maxinmum = 200
This should set your screen up so it no long needs to zoom to click a link but also makes the virtual page width the same size as the screen in landscape mode.
Slothie said:
Adaptive Zoom
Don’t want to zoom to click a link? Try this..
1. Open opera’s preference editor by going to the following link:
opera:config
Note there is no http:// proceeding the link.
2. Click on Adaptive Zoom and try the following settings:
Browser Buffer Width = 800
Maximum Zoom = 100
Minimum Overview Zoom = 100
Minimum Zoom = 100
Virtual Screen Width = 800
Zoom Slider Maxinmum = 200
This should set your screen up so it no long needs to zoom to click a link but also makes the virtual page width the same size as the screen in landscape mode.
Click to expand...
Click to collapse
Hi,
thanks for the Tip ... but,
In 9.7b1 I can't find:
- Maximum Zoom
- Maximum Overview Zoom
- Minimum Zoom
- Zoom Slider Maximum
in 9.5 they exist but not in 9.7
not sure if it's something i've done, but after making those changes i can't launch Opera any more!!
I get the htc loading page for about about 20 seconds and then it just closes - anyone else had this problem or know how to solve?
Slothie said:
Adaptive Zoom
Don’t want to zoom to click a link? Try this..
1. Open opera’s preference editor by going to the following link:
opera:config
Note there is no http:// proceeding the link.
2. Click on Adaptive Zoom and try the following settings:
Browser Buffer Height = 4096
Browser Buffer Width = 800
Maximum Zoom = 100
Minimum Overview Zoom = 100
Minimum Zoom = 100
Virtual Screen Width = 800
Zoom Slider Maxinmum = 200
This should set your screen up so it no long needs to zoom to click a link but also makes the virtual page width the same size as the screen in landscape mode.
Click to expand...
Click to collapse
It also makes the text tiny.
Does anyone have the original settings please, stupidly I did not note them down.
MaskedMarauder said:
It also makes the text tiny.
Does anyone have the original settings please, stupidly I did not note them down.
Click to expand...
Click to collapse
In Opera 9.5 i have the following settings which allow me to open links without zooming. Min overview zoom is the only changed variable.
Browser Buffer Height = 1400
Browser Buffer Width = 960
Maximum Zoom = 200
Minimum Overview Zoom = 85
Minimum Zoom = 160
Virtual Screen Width = 960
Zoom Slider Maxinmum = 500
So will altering these settings change the width of text elements and reduce the amount of zoom? I'm running this on an HX4700 with a 4.0" screen (I know, I'm getting my touch HD in less than 30 hours). When the zoom action happens, it automatically zooms to the width of the column element (ingenious) so I can scroll throught he column without side scrolling. However the width of the elements are too narrow and as such causes the zoom to be too high. I'd like to use the 4" display and VGA rez to read smaller but more amount of text.
I've no idea mate sorry. I just copies and writes up what i sees
MaskedMarauder said:
Does anyone have the original settings please, stupidly I did not note them down.
Click to expand...
Click to collapse
Just noted these down from my new HD, here they are:
Browser Buffer Height = 1400
Browser Buffer Width = 960
Maximum Zoom = 200
Minimum Overview Zoom = 60
Minimum Zoom = 160
Virtual Screen Width = 960
Zoom Slider Maxinmum = 500
Thank you very much saad.salman & Freypal
i've been looking for that setting (minimum overview zoom) for a while - cheers!!
Riceburner said:
i've been looking for that setting (minimum overview zoom) for a while - cheers!!
Click to expand...
Click to collapse
it doesn't work in Diamond 2 Opera ><
nick666 said:
not sure if it's something i've done, but after making those changes i can't launch Opera any more!!
I get the htc loading page for about about 20 seconds and then it just closes - anyone else had this problem or know how to solve?
Click to expand...
Click to collapse
Get a hold of opera.ini >>windows>opera9
edit the file, the first few lines are the ones you will need to change.
Just copied this from mine..
[Adaptive Zoom]
Minimum Zoom=160
Minimum Overview Zoom=70
Browser Buffer Height=1400
Browser Buffer Width=960
Maximum Zoom=200
Virtual Screen Width=960
Zoom Slider Maximum=500
after changing back, having had the same problem you did...
Good Luck
Slothie said:
This should set your screen up so it no long needs to zoom to click a link but also makes the virtual page width the same size as the screen in landscape mode.
Click to expand...
Click to collapse
Just note that with this tweak you will lose the ability to trigger mouseover action for links.
Neville.Holland said:
Get a hold of opera.ini >>windows>opera9
edit the file, the first few lines are the ones you will need to change.
Just copied this from mine..
[Adaptive Zoom]
Minimum Zoom=160
Minimum Overview Zoom=70
Browser Buffer Height=1400
Browser Buffer Width=960
Maximum Zoom=200
Virtual Screen Width=960
Zoom Slider Maximum=500
after changing back, having had the same problem you did...
Good Luck
Click to expand...
Click to collapse
I had the same problem but I can't find the file I can't search my phone's files either...
Ekkoe said:
I had the same problem but I can't find the file I can't search my phone's files either...
Click to expand...
Click to collapse
I could only imagine it being in the one of the following
\Windows
\Windows\Opera
Possible \Application Data but unlikely I think.
I'm running the standard 6.1 HTC original ROM.
Forget all that. Everything is running. It didn't go as smooth and understandable as I might have hoped, but it works now. Thanks!
Hi there. I'm making an AR app and I couldn't figure out a way to draw on top of a camera view. I've created a custom SurfaceView class which uses Camera.startPreview and Camera.setPreviewDisplay to draw the real time feed from the camera upon it. Now I'm trying to render something on it. I have another SurfaceView which has a painter thread which is running with 30 fps and is drawing every frame on a Canvas obtained by SurfaceHolder.lockCanvas(). I put the two views in a FrameLayout like this
Code:
Preview cv = new Preview(
this.getApplicationContext());
Pano mGameView = new Pano(this.getApplicationContext());
FrameLayout rl = new FrameLayout(
this.getApplicationContext());
setContentView(rl);
rl.addView(cv);
rl.addView(mGameView);
And sadly it doesn't work. It shows only the camera feed. If I switch the order like this
Code:
rl.addView(mGameView);
rl.addView(cv);
The camera feed dissipates and only the painter is visible...
How should I make it work
Phew. Just to tell you I found a solution. You add this line
Code:
getHolder().setFormat(PixelFormat.TRANSLUCENT);
in the initialization of your overlay view
Hi good day to all , look I commented that I had the misfortune to make my first purchase online and has been a rev3 touchscreen for my Nokia Lumia 620, I had my doubts that I had read enough complaints and others but good cheapskate that I am I decided to buy it. Turned out to be a Chinese imitation, if the screen is not sooo bad , but I came NG vertically touchscreen function is inverted ! Let the coordinates are those that are inverted .. From top to bottom , instead horizontally and do not .. Obviously the corresponding claim because publication of ML say that the screen is 100 % original, is not it! But they say that should not have misplaced this screen or the other thing , and defraud people , good order as I said this inverted vertically , I was reading a lot on forums and trying to find the solution stop me with this in internet ..
You open the firmware to modify the editor dragon face and loads the firmware to edit , you go to advanced settings, then " system settings " , you will open the file script.bin . Then look for the following lines :
[ ctp_para ]
ctp_used = 1 (1 or 0 according to this on or off the touch)
ctp_name = " gt811_ts " (name of driver ic touch here GT811 )
ctp_twi_id = 1 ( do not touch these lines )
ctp_twi_addr = 0x5d ( not touch these lines )
ctp_screen_max_x = 800 (horizontal resolution of the screen)
ctp_screen_max_y = 480 (vertical resolution of the screen)
ctp_revert_x_flag = 0 ( if we write 1 we invest touch horizontally)
ctp_revert_y_flag = 0 ( if we write 1 we invest touch vertically)
ctp_exchange_x_y_flag = 0 ( if we write one reverses the XY coordinates)
The first thing to check is that the horizontal and vertical resolution in the script matches the resolution of our lcd screen, the most common for 7 "tablets is 800 × 480 although this and popularizing the 1024 × 600, if the resolution not for the touch of the finger will look bad record.
If the touch screen is vertically inverted ctp_revert_y_flag change the value , and if this change ctp_revert_x_flag inverted horizontally , in some cases the two are reversed . If this does not work , leave the values at the beginning and edit the entry ctp_exchange_x_y_flag .
This is an example of what you mean to imply, that I quoted is for editing allwinner firmware and I thought that the only way to not take the disappointment of never again able to use either my lumia 620 could also edit the firmware lumia 620, but how? I have no idea how to open it nor to modify it, I try to access the settings of the touch, or is editing via software to invest vertically from the driver or the driver for the touch, and so could be used FINALLY well my phone, anyone would be so kind as to give me a hand? I want help to do it! I do not ask you do, in any way.
From already thank you very much, Cristian.
PD: I think the idea is good plus it might help people with the same problem as me! That sure will be many.
Ch3z7er said:
Hi good day to all , look I commented that I had the misfortune to make my first purchase online and has been a rev3 touchscreen for my Nokia Lumia 620, I had my doubts that I had read enough complaints and others but good cheapskate that I am I decided to buy it. Turned out to be a Chinese imitation, if the screen is not sooo bad , but I came NG vertically touchscreen function is inverted ! Let the coordinates are those that are inverted .. From top to bottom , instead horizontally and do not .. Obviously the corresponding claim because publication of ML say that the screen is 100 % original, is not it! But they say that should not have misplaced this screen or the other thing , and defraud people , good order as I said this inverted vertically , I was reading a lot on forums and trying to find the solution stop me with this in internet ..
You open the firmware to modify the editor dragon face and loads the firmware to edit , you go to advanced settings, then " system settings " , you will open the file script.bin . Then look for the following lines :
[ ctp_para ]
ctp_used = 1 (1 or 0 according to this on or off the touch)
ctp_name = " gt811_ts " (name of driver ic touch here GT811 )
ctp_twi_id = 1 ( do not touch these lines )
ctp_twi_addr = 0x5d ( not touch these lines )
ctp_screen_max_x = 800 (horizontal resolution of the screen)
ctp_screen_max_y = 480 (vertical resolution of the screen)
ctp_revert_x_flag = 0 ( if we write 1 we invest touch horizontally)
ctp_revert_y_flag = 0 ( if we write 1 we invest touch vertically)
ctp_exchange_x_y_flag = 0 ( if we write one reverses the XY coordinates)
The first thing to check is that the horizontal and vertical resolution in the script matches the resolution of our lcd screen, the most common for 7 "tablets is 800 × 480 although this and popularizing the 1024 × 600, if the resolution not for the touch of the finger will look bad record.
If the touch screen is vertically inverted ctp_revert_y_flag change the value , and if this change ctp_revert_x_flag inverted horizontally , in some cases the two are reversed . If this does not work , leave the values at the beginning and edit the entry ctp_exchange_x_y_flag .
This is an example of what you mean to imply, that I quoted is for editing allwinner firmware and I thought that the only way to not take the disappointment of never again able to use either my lumia 620 could also edit the firmware lumia 620, but how? I have no idea how to open it nor to modify it, I try to access the settings of the touch, or is editing via software to invest vertically from the driver or the driver for the touch, and so could be used FINALLY well my phone, anyone would be so kind as to give me a hand? I want help to do it! I do not ask you do, in any way.
From already thank you very much, Cristian.
PD: I think the idea is good plus it might help people with the same problem as me! That sure will be many.
Click to expand...
Click to collapse
i'm in a same situation. i hope exist a solution.
Ch3z7er said:
Hi good day to all , look I commented that I had the misfortune to make my first purchase online and has been a rev3 touchscreen for my Nokia Lumia 620, I had my doubts that I had read enough complaints and others but good cheapskate that I am I decided to buy it. Turned out to be a Chinese imitation, if the screen is not sooo bad , but I came NG vertically touchscreen function is inverted ! Let the coordinates are those that are inverted .. From top to bottom , instead horizontally and do not .. Obviously the corresponding claim because publication of ML say that the screen is 100 % original, is not it! But they say that should not have misplaced this screen or the other thing , and defraud people , good order as I said this inverted vertically , I was reading a lot on forums and trying to find the solution stop me with this in internet ..
You open the firmware to modify the editor dragon face and loads the firmware to edit , you go to advanced settings, then " system settings " , you will open the file script.bin . Then look for the following lines :
[ ctp_para ]
ctp_used = 1 (1 or 0 according to this on or off the touch)
ctp_name = " gt811_ts " (name of driver ic touch here GT811 )
ctp_twi_id = 1 ( do not touch these lines )
ctp_twi_addr = 0x5d ( not touch these lines )
ctp_screen_max_x = 800 (horizontal resolution of the screen)
ctp_screen_max_y = 480 (vertical resolution of the screen)
ctp_revert_x_flag = 0 ( if we write 1 we invest touch horizontally)
ctp_revert_y_flag = 0 ( if we write 1 we invest touch vertically)
ctp_exchange_x_y_flag = 0 ( if we write one reverses the XY coordinates)
The first thing to check is that the horizontal and vertical resolution in the script matches the resolution of our lcd screen, the most common for 7 "tablets is 800 × 480 although this and popularizing the 1024 × 600, if the resolution not for the touch of the finger will look bad record.
If the touch screen is vertically inverted ctp_revert_y_flag change the value , and if this change ctp_revert_x_flag inverted horizontally , in some cases the two are reversed . If this does not work , leave the values at the beginning and edit the entry ctp_exchange_x_y_flag .
This is an example of what you mean to imply, that I quoted is for editing allwinner firmware and I thought that the only way to not take the disappointment of never again able to use either my lumia 620 could also edit the firmware lumia 620, but how? I have no idea how to open it nor to modify it, I try to access the settings of the touch, or is editing via software to invest vertically from the driver or the driver for the touch, and so could be used FINALLY well my phone, anyone would be so kind as to give me a hand? I want help to do it! I do not ask you do, in any way.
From already thank you very much, Cristian.
PD: I think the idea is good plus it might help people with the same problem as me! That sure will be many.
Click to expand...
Click to collapse
How can i open the FFU file? Which program? Everybody know?
Touch screen
Sir! Is there any way to edit NEW firmwares, after I update my Lumia 620 I can't use Touch anymore, I always have to reflash it with some other Product key, please help if you have a solution, I think It's something like missing driver for Chinese Digitizer..
Newsgone
Nice brand i have used it. it was good operated. and new app in it.
good job
Ch3z7er said:
Hi good day to all , look I commented that I had the misfortune to make my first purchase online and has been a rev3 touchscreen for my Nokia Lumia 620, I had my doubts that I had read enough complaints and others but good cheapskate that I am I decided to buy it. Turned out to be a Chinese imitation, if the screen is not sooo bad , but I came NG vertically touchscreen function is inverted ! Let the coordinates are those that are inverted .. From top to bottom , instead horizontally and do not .. Obviously the corresponding claim because publication of ML say that the screen is 100 % original, is not it! But they say that should not have misplaced this screen or the other thing , and defraud people , good order as I said this inverted vertically , I was reading a lot on forums and trying to find the solution stop me with this in internet ..
You open the firmware to modify the editor dragon face and loads the firmware to edit , you go to advanced settings, then " system settings " , you will open the file script.bin . Then look for the following lines :
[ ctp_para ]
ctp_used = 1 (1 or 0 according to this on or off the touch)
ctp_name = " gt811_ts " (name of driver ic touch here GT811 )
ctp_twi_id = 1 ( do not touch these lines )
ctp_twi_addr = 0x5d ( not touch these lines )
ctp_screen_max_x = 800 (horizontal resolution of the screen)
ctp_screen_max_y = 480 (vertical resolution of the screen)
ctp_revert_x_flag = 0 ( if we write 1 we invest touch horizontally)
ctp_revert_y_flag = 0 ( if we write 1 we invest touch vertically)
ctp_exchange_x_y_flag = 0 ( if we write one reverses the XY coordinates)
The first thing to check is that the horizontal and vertical resolution in the script matches the resolution of our lcd screen, the most common for 7 "tablets is 800 × 480 although this and popularizing the 1024 × 600, if the resolution not for the touch of the finger will look bad record.
If the touch screen is vertically inverted ctp_revert_y_flag change the value , and if this change ctp_revert_x_flag inverted horizontally , in some cases the two are reversed . If this does not work , leave the values at the beginning and edit the entry ctp_exchange_x_y_flag .
This is an example of what you mean to imply, that I quoted is for editing allwinner firmware and I thought that the only way to not take the disappointment of never again able to use either my lumia 620 could also edit the firmware lumia 620, but how? I have no idea how to open it nor to modify it, I try to access the settings of the touch, or is editing via software to invest vertically from the driver or the driver for the touch, and so could be used FINALLY well my phone, anyone would be so kind as to give me a hand? I want help to do it! I do not ask you do, in any way.
From already thank you very much, Cristian.
PD: I think the idea is good plus it might help people with the same problem as me! That sure will be many.
Click to expand...
Click to collapse
thaks
PHP:
help
fuccetz said:
thaks
PHP:
Click to expand...
Click to collapse
Hello, how i do to change the y orientation in the software ?
Every one of the RAW images I've taken with this device, regardless of the camera app, produces a dark line on the far right when viewed in Lightroom and Photoshop. Anyone else experience this? I've tried more than one manual camera app with the same result, but it does seem that the Snapseed app can see and edit the DNG on the phone without the green line present. Leads me to believe this is some kind of issue with Adobe so just wondered if anyone else had encountered it. I also tried disabling any import presets but that didn't change anything. Have a look at the attached samples to see what I mean.
{
"lightbox_close": "Close",
"lightbox_next": "Next",
"lightbox_previous": "Previous",
"lightbox_error": "The requested content cannot be loaded. Please try again later.",
"lightbox_start_slideshow": "Start slideshow",
"lightbox_stop_slideshow": "Stop slideshow",
"lightbox_full_screen": "Full screen",
"lightbox_thumbnails": "Thumbnails",
"lightbox_download": "Download",
"lightbox_share": "Share",
"lightbox_zoom": "Zoom",
"lightbox_new_window": "New window",
"lightbox_toggle_sidebar": "Toggle sidebar"
}
I have encountered it, but I have not tried to fix it. Sorry.
I am also not convinced it is an Adobe issue. Open some of the DNGs in explorer, they should be around 25 megabytes give or take. But I often see them as low as 2 kilobyes, obviously that isn't right so there must be something else along the chain wrong.
staticx57 said:
I have encountered it, but I have not tried to fix it. Sorry.
I am also not convinced it is an Adobe issue. Open some of the DNGs in explorer, they should be around 25 megabytes give or take. But I often see them as low as 2 kilobyes, obviously that isn't right so there must be something else along the chain wrong.
Click to expand...
Click to collapse
Ok I don't seem to be having that issue luckily. But as a further test I downloaded a simple Windows conversion utility last night and used it to convert one of the DNG files to JPG and it worked fine. I mean, the colours and general processing were absolute crap, but there was no dark line so whatever problem I'm having certainly doesn't appear to be with the RAW file from the 6P. And as I said, Snapseed edits them without a problem.
After work today I'll post in the Adobe support forums and see if I get any information there.
evo5ive said:
Every one of the RAW images I've taken with this device, regardless of the camera app, produces a dark line on the far right when viewed in Lightroom and Photoshop. Anyone else experience this? I've tried more than one manual camera app with the same result, but it does seem that the Snapseed app can see and edit the DNG on the phone without the green line present. Leads me to believe this is some kind of issue with Adobe so just wondered if anyone else had encountered it. I also tried disabling any import presets but that didn't change anything. Have a look at the attached samples to see what I mean.
Click to expand...
Click to collapse
can upload sample raw file
defcomg said:
can upload sample raw file
Click to expand...
Click to collapse
Sure, try these. Just ran a few more tests and it seems Snapseed is in fact picking up the dark band. BUT, when I shoot either the standard camera app or output to JPG in the manual apps the resulting images do NOT show the dark band. Seems to be a problem that only occurs when the device saves the RAW file.
Uploaded from my PC
Uploaded from phone
evo5ive said:
Sure, try these. Just ran a few more tests and it seems Snapseed is in fact picking up the dark band. BUT, when I shoot either the standard camera app or output to JPG in the manual apps the resulting images do NOT show the dark band. Seems to be a problem that only occurs when the device saves the RAW file.
Uploaded from my PC
Uploaded from phone
Click to expand...
Click to collapse
The Problem is the Active Area DNG Tag the darker area should not be visible somehow Active Area Tag is conflicting with Default crop size tag http://www.barrypearson.co.uk/articles/dng/specification.htm. dcraw based apps seem to use active area tag and ignore the default crop tag so the band is not visible
6P DNG Header
Code:
ExifTool Version Number : 9.69
File Name : ProShot_20151126_143708.dng
Directory : C:/Users/GeorgeKiarie/Downloads
File Size : 24 MB
File Modification Date/Time : 2015:11:26 22:20:33+02:00
File Access Date/Time : 2015:11:26 22:17:54+02:00
File Creation Date/Time : 2015:11:26 22:17:54+02:00
File Permissions : rw-rw-rw-
File Type : DNG
MIME Type : image/x-adobe-dng
Exif Byte Order : Little-endian (Intel, II)
Subfile Type : Full-resolution Image
Image Width : 4080
Image Height : 3028
Bits Per Sample : 16
Compression : Uncompressed
Photometric Interpretation : Color Filter Array
Make : Huawei
Camera Model Name : Nexus 6P
Strip Offsets : (Binary data 25901 bytes, use -b option to extract)
Orientation : Horizontal (normal)
Samples Per Pixel : 1
Rows Per Strip : 1
Strip Byte Counts : (Binary data 15139 bytes, use -b option to extract)
X Resolution : 72
Y Resolution : 72
Planar Configuration : Chunky
Resolution Unit : inches
Software : google/angler/angler:6.0/MDB08L/2343525:user/release-keys
Modify Date : 2015:11:24 01:13:03
XMP Toolkit : Adobe XMP Core 5.6-c011 79.156380, 2014/05/21-23:38:37
Creator Tool : google/angler/angler:6.0/MDB08L/2343525:user/release-keys
Rating : 0
Metadata Date : 2015:11:26 14:46:24-04:00
Date Created : 2015:11:24 01:13:03
Document ID : E76921AC715FABD3C153F15B23AEEA74
Original Document ID : E76921AC715FABD3C153F15B23AEEA74
Instance ID : xmp.iid:42b35b1d-eeff-ea44-a7be-becf042fbc8c
Format : image/dng
Raw File Name : ProShot_20151126_143708.dng
Version : 9.3
Has Settings : False
Has Crop : False
Already Applied : False
Photographic Sensitivity : 100
History Action : saved
History Instance ID : xmp.iid:42b35b1d-eeff-ea44-a7be-becf042fbc8c
History When : 2015:11:26 14:46:24-04:00
History Software Agent : Adobe Photoshop Camera Raw 9.3 (Windows)
History Changed : /metadata
CFA Repeat Pattern Dim : 2 2
CFA Pattern 2 : 0 1 1 2
Exposure Time : 1/110
F Number : 2.0
Exif Version : 0221
Shutter Speed Value : 1/110
Aperture Value : 2.0
GPS Version ID : 2.3.0.0
GPS Latitude Ref : North
GPS Longitude Ref : West
GPS Time Stamp : 18:37:11
GPS Date Stamp : 2015:11:26
ISO : 100
Date/Time Original : 2015:11:24 01:13:03
Focal Length : 4.7 mm
TIFF-EP Standard ID : 1 0 0 0
DNG Version : 1.4.0.0
DNG Backward Version : 1.1.0.0
Unique Camera Model : Nexus 6P-Huawei-google
CFA Plane Color : Red,Green,Blue
CFA Layout : Rectangular
Black Level Repeat Dim : 2 2
Black Level : 52 52 52 52
White Level : 1023
Default Scale : 1 1
Default Crop Origin : 8 8
Default Crop Size : 4016 3008
Color Matrix 1 : 0.8125 -0.2265625 -0.125 -0.3203125 1.265625 0.0390625 -0.0390625 0.2265625 0.453125
Color Matrix 2 : 1.0078125 -0.2890625 -0.21875 -0.5625 1.6328125 -0.046875 -0.0703125 0.2109375 0.640625
Camera Calibration 1 : 1 0 0 0 1 0 0 0 0.9921875
Camera Calibration 2 : 1 0 0 0 1 0 0 0 0.9921875
As Shot Neutral : 0.46875 1 0.6328125
Calibration Illuminant 1 : D65
Calibration Illuminant 2 : Standard Light A
Active Area : 2 48 3026 4080
Forward Matrix 1 : 0.578125 0.21875 0.1640625 0.15625 0.84375 0 -0.015625 -0.2890625 1.1328125
Forward Matrix 2 : 0.6875 0.015625 0.265625 0.2109375 0.6796875 0.1015625 0 -0.5390625 1.3671875
Opcode List 2 : (Binary data 3908 bytes, use -b option to extract)
Opcode List 3 : (Binary data 4 bytes, use -b option to extract)
Noise Profile : 0.00020673168 1.8208447e-006 0.00020673168 1.8208447e-006 0.00020673168 1.8208447e-006
Aperture : 2.0
CFA Pattern : [Red,Green][Green,Blue]
GPS Date/Time : 2015:11:26 18:37:11Z
GPS Latitude : 13 deg 4' 13.48" N
GPS Longitude : 59 deg 33' 59.05" W
GPS Position : 13 deg 4' 13.48" N, 59 deg 33' 59.05" W
Image Size : 4080x3028
Shutter Speed : 1/110
Focal Length : 4.7 mm
Light Value : 8.8
Moto Nexus 6 DNG Header
Code:
ExifTool Version Number : 9.69
File Name : paraiso.dng
Directory : C:/Users/GeorgeKiarie/Pictures/DNG/other
File Size : 25 MB
File Modification Date/Time : 2015:08:04 02:07:42+02:00
File Access Date/Time : 2015:08:04 02:04:32+02:00
File Creation Date/Time : 2015:08:04 02:04:32+02:00
File Permissions : rw-rw-rw-
File Type : DNG
MIME Type : image/x-adobe-dng
Exif Byte Order : Little-endian (Intel, II)
Subfile Type : Full-resolution Image
Image Width : 4208
Image Height : 3120
Bits Per Sample : 16
Compression : Uncompressed
Photometric Interpretation : Color Filter Array
Image Description :
Make : motorola
Camera Model Name : Nexus 6
Strip Offsets : (Binary data 26769 bytes, use -b option to extract)
Orientation : Horizontal (normal)
Samples Per Pixel : 1
Rows Per Strip : 1
Strip Byte Counts : (Binary data 15599 bytes, use -b option to extract)
X Resolution : 72
Y Resolution : 72
Planar Configuration : Chunky
Resolution Unit : inches
Software : google/shamu/shamu:5.0/LRX21O/1570415:user/release-keys
Modify Date : 1970:01:22 17:47:12
CFA Repeat Pattern Dim : 2 2
CFA Pattern 2 : 2 1 1 0
Copyright :
Exposure Time : 1/1653
F Number : 2.0
ISO : 40
Date/Time Original : 1970:01:22 17:47:12
Focal Length : 3.8 mm
TIFF-EP Standard ID : 1 0 0 0
DNG Version : 1.4.0.0
DNG Backward Version : 1.1.0.0
Unique Camera Model : Nexus 6-motorola-google
CFA Plane Color : Red,Green,Blue
CFA Layout : Rectangular
Black Level Repeat Dim : 2 2
Black Level : 64 64 64 64
White Level : 1023
Default Scale : 1 1
Default Crop Origin : 8 8
Default Crop Size : 4200 3112
Color Matrix 1 : 0.6953125 -0.0859375 -0.09375 -0.4609375 1.296875 0.1328125 -0.109375 0.2578125 0.5390625
Color Matrix 2 : 1.21875 -0.4296875 -0.25 -0.4609375 1.5 0.015625 -0.046875 0.21875 0.609375
Camera Calibration 1 : 1 0 0 0 1 0 0 0 1
Camera Calibration 2 : 1 0 0 0 1 0 0 0 1
As Shot Neutral : 0.5390625 1 0.6640625
Calibration Illuminant 1 : D65
Calibration Illuminant 2 : Standard Light A
Forward Matrix 1 : 0.7578125 0.0859375 0.1171875 0.2734375 0.828125 -0.1015625 0.015625 -0.28125 1.0859375
Forward Matrix 2 : 0.6328125 0.046875 0.28125 0.1640625 0.7578125 0.078125 -0.046875 -0.640625 1.5078125
Opcode List 2 : (Binary data 3908 bytes, use -b option to extract)
Noise Profile : 0.00051471478 0 0.00051471478 0 0.00051471478 0
Aperture : 2.0
CFA Pattern : [Blue,Green][Green,Red]
Image Size : 4208x3120
Shutter Speed : 1/1653
Focal Length : 3.8 mm
Light Value : 14.0
when opening nexus 6 dng in PS /LR the image res is 4200 x 3112 but on dcraw based apps res is 4208 x 3120 now had moto added Active area tag i believe there would have been a dark area on pixels that go past 4200.
on lightroom pc DNG Recover Edge plugin should make it go away .
it would be interseting to see how the header of a 5x or 6p without that issue looks like
defcomg said:
The Problem is the Active Area DNG Tag the darker area should not be visible somehow Active Area Tag is conflicting with Default crop size tag http://www.barrypearson.co.uk/articles/dng/specification.htm. dcraw based apps seem to use active area tag and ignore the default crop tag so the band is not visible
when opening nexus 6 dng in PS /LR the image res is 4200 x 3112 but on dcraw based apps res is 4208 x 3120 now had moto added Active area tag i believe there would have been a dark area on pixels that go past 4200.
on lightroom pc DNG Recover Edge plugin should make it go away .
it would be interseting to see how the header of a 5x or 6p without that issue looks like
Click to expand...
Click to collapse
Very interesting, thanks for that. I'll look into that plugin for sure. So I'm assuming the problem lies in the RAW tag generated by the phone, and if that's the case it means it could be fixed with a simple software patch, correct? Just trying to get my info straight so I can submit a bug report to Google. (Bit embarrassed to admit that I'm a photographer by profession yet know very little about the technical workings of RAW formats )
evo5ive said:
Very interesting, thanks for that. I'll look into that plugin for sure. So I'm assuming the problem lies in the RAW tag generated by the phone, and if that's the case it means it could be fixed with a simple software patch, correct? Just trying to get my info straight so I can submit a bug report to Google. (Bit embarrassed to admit that I'm a photographer by profession yet know very little about the technical workings of RAW formats )
Click to expand...
Click to collapse
yeah its a simple software issue that can be rectified with a patch